TFS-为实验开发分支:解决方案无法加载

时间:2020-03-05 18:47:16  来源:igfitidea点击:

免责声明:我坚持使用TFS,但我讨厌它。

我的源代码控制结构如下所示:

  • / dev
  • /发行
  • /分支
  • /实验升级

我从开发人员分支到实验升级人员,但没有碰到它。然后,我在开发人员中做了更多工作,并合并到实验性升级。 TFS莫名其妙地抱怨我在源和目标上都有更改,因此我必须解决它们。我为所有5个项目选择了"从源分支复制项目"。

我签出了实验性升级到本地文件夹,然后尝试在其中打开主解决方案文件。 TFS提示我:

"Projects have recently been added to this solution.  Would you like to get them from source control?

如果我说是的话,它会做一些事情,但最终会失败,无法加载少数几个项目。如果我拒绝,我会得到相同的结果。

在两个分支中比较我的sln会告诉我它们是相等的。

谁能让我知道我在做什么错?这应该是一个简单的分支/合并操作...

TIA。

更新:

我注意到,如果在上面的对话框中单击"是",则项目将下载到源代码管理的$ /根目录下(即从dev&branch文件夹中删除)

如果我在分支中打开解决方案并删除死掉的项目,然后尝试重新添加它们(通过右键单击sln,添加现有项目,选择位于分支文件夹中的项目,则会出现错误...

Cannot load the project c:\sandbox\my_solution\proj1\proj1.csproj, the file has been removed or deleted.  The project path I was trying to add is this:  c:\sandbox\my_solution\branches\experimental-upgrade\proj1\proj1.csproj

这些项目在世界范围之外的指向是什么?解决方案文件与dev分支中的文件相同,并且这些项目可以正常加载。我还查看了vspscc和vssscc文件,但未找到任何内容。

有想法吗?

解决方案

回答

@Nick:尚未对此进行任何更改。我可能必须删除它并重新分支(但是我们真的不能在TFS中完全删除)

我不得不不同意……分支绝对是进行实验性更改的好习惯。搁架只是临时存储,如果我不想签入,将对其进行备份。但这需要在我们开发真实功能时进行开发。

回答

如果不了解解决方案设置的更多信息,我不确定。但是,如果我们有任何项目参考可以解释这一点。因为我们在"分支"下具有"实验升级"子文件夹,所以相对路径已更改。

这意味着当VS过去通常在.. \ .. \ project \中查找我们引用的项目时,现在必须在.. \ .. \ .. \ project \任何位置中查找。注意额外的.. \

要解决此问题,我们必须重新添加项目引用。我还没有找到更好的方法。我们可以删除它们并重新添加它们,或者转到属性窗口并更改它们的路径,然后重新加载它们。无论哪种方式,我们都必须在任何项目中重做对它们的引用。

另外,检查工作文件夹,以确保它没有将任何项目下载到错误的文件夹中。有时可能会发生这种情况...

回答

@本

我们实际上可以在TFS中进行完全删除,但是除非我们知道自己在做什么,否则强烈建议不要这样做。我们必须使用tf destroy命令在命令行中执行此操作

tf destroy [/keephistory] itemspec1 [;versionspec]
           [itemspec2...itemspecN] [/stopat:versionspec] [/preview]
           [/startcleanup] [/noprompt]

Versionspec:
    Date/Time         Dmm/dd/yyyy
                      or any .Net Framework-supported format
                      or any of the date formats of the local machine
    Changeset number  Cnnnnnn
    Label             Llabelname
    Latest version    T
    Workspace         Wworkspacename;workspaceowner

在执行此操作之前,请确保使用/ preview进行尝试。每个人都有自己的分支方法。我的是分支发布,并在development或者root文件夹中进行所有开发。听起来分支也很适合我们,只是解决方案文件被搞砸了,这可能是由于绑定问题和vssss文件造成的。

回答

有几件事。文件夹结构是否相同?我们可以成功删除和阅读项目参考吗?

如果创建解决方案,然后手动添加所有项目,那么该工作是否可行。 (这可能不可行,因为我们有超过100个项目的解决方案)。

完成分支后的另一件事(可能很愚蠢),我们提交了吗?我想知道我们是否分支但未检入,然后合并,然后当我们尝试检入时,TFS令人困惑。

回答

@凯文:

This means when VS used to look for your referenced projects in ....\project\whatever it now has to look in ......\project\whatever. Note the extra ..\

我们可能会在此处介绍一些内容,但是并不能解释为什么某些项目会加载而其他项目不会加载。我还没有发现它们之间的关联。

我想我将尝试重新添加项目,看看是否可行。

回答

@Cory:

我认为这就是我要尝试的...我有大约20个项目,还有8个左右尚未加载。文件夹的结构从根开始是相同的...即:在DEV之外没有任何引用。