关于版本控制:TFS-为实验开发分支:解决方案无法加载

关于版本控制:TFS-为实验开发分支:解决方案无法加载

TFS - Branching for experimental development: Solution fails to load

免责声明:我坚持使用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文件,但未找到任何内容。

有想法吗?


@本

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

1
2
3
4
5
6
7
8
9
10
11
12
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文件造成的。


@Cory:

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


@凯文:

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 ..\\

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

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


有几件事。文件夹结构是否相同?您能否成功删除和阅读项目参考?

如果创建解决方案,然后手动添加所有项目,那么该工作是否可行。 (这可能不可行-我们为一百多个项目提供了解决方案)。

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


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

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

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

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


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

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


推荐阅读