TFS:在两个分支之间合并.csproj文件,这两个分支在两个分支之间具有项目引用

时间:2018-06-05 13:39:05

标签: visual-studio tfs version-control branching-and-merging csproj

我遇到了将dev分支合并到主分支的问题,当这些分支中的.csproj项目文件在其所述分支中都有其他项目引用时。例如,想象下面的TFS源控制结构:

  • Web Project 1(TFS团队项目)
    • Dev Branch
      • MyWebsite.csproj
    • 主要分支
      • MyWebsite.csproj
        • Web Project 2(TFS团队项目)
    • Dev Branch
      • MyWebsite2.csproj
    • 主要分支
      • MyWebsite2.csproj
  • 数据库项目(TFS团队项目)
    • Dev Branch
      • MyDatabase.csproj
    • 主要分支
      • MyDatabase.csproj
        • 其他公共图书馆(TFS小组项目)
    • Dev Branch
      • MyClassLibrary.csproj
    • 主要分支
      • MyClassLibrary.csproj

实际上,结构比上面的要复杂得多,因为有更多项目具有相同的分支结构,但要解决的问题是相同的。

网站项目开发分支引用数据库和公共项目开发分支,网站项目主分支引用数据库和公共项目主分支。例如,MyWebsite.csproj文件中的引用可能是:

    <ProjectReference Include="..\..\Database Project\Dev Branch\MyDatabase.csproj">
  <Project>{312ced42-f890-4d64-b27d-9ae53a42304c}</Project>
  <Name>MyDatabase</Name>
</ProjectReference>

因此,您正在对dev分支进行更改,并且dev分支中的.csproj文件正确引用dev分支中的其他.csproj文件;但是当你将dev分支合并到主分支时,.csproj文件正在尝试更新从trunk分支到dev分支的引用。

解决此问题的最佳做法是什么,以便在从dev合并到trunk时,trunk项目仍然正确引用其他trunk项目,并且不会更新到dev分支引用?

编辑寻找非nuget建议,并且无法将它们合并到一个分支下,因为实际结构比上面概述的要复杂得多。在3个独立的TFS团队项目中有3个独立的Web应用程序,它们引用了这些公共库中的几个,这些库也在它们自己的TFS项目中。然后,每个团队项目都有开发和主要分支。

1 个答案:

答案 0 :(得分:1)

如果这些内容是单独版本化的,请停止依赖项目引用。将它们转换为NuGet包,将它们发布到NuGet提要,并依赖NuGet引用来恢复正确的版本。

如果这些内容未单独版本化,请将它们全部放在同一分支下,并依赖于不包含分支文件夹名称的项目引用的相对路径。