Visual Studio中的多个Subversion项目及其与Subversion的依赖关系

时间:2013-07-21 04:26:32

标签: visual-studio-2010 svn externals

我想管理一个包含多个项目的解决方案,并将每个项目放在他们自己的存储库结构(branches / tags / trunk)中。 我有一个项目Test1,我将它提交到自己的存储库:

trunk
  Test1
        Properties
        Class1.cs
        Test1.csproj
  Test1.sln

我有另一个项目Test2,我将它提交到自己的存储库,Test2依赖于Test1.I使用svn:enxternals在Test2中引用Test1,然后在Visual Studio中右键单击解决方案Test2然后再添加 - > 现有项目,添加Test1。

branches/
    tags/
    trunk/
      Test2/
        Properties/
        Class2.cs
        Test2.csproj 
     Test2.sln
     svn:externals Test1 https://mydomain/Test1/trunk/Test1

我还有一个依赖于Test2的另一个项目Test3:

branches/
    tags/
    trunk/
       Test3/
         Properties/
         Class3.cs
         Test3.csproj 
       Test3.sln
       svn:externals Test2 https://svn/Test2/trunk/Test2

然后执行与Test2相同的操作。

但是当我将Test2项目添加到Test3时,Test2项目(Test1)的依赖性不存在,然后当我想构建Test3时出现错误。

为了解决这个问题,我在Test3存储库中使用以下sv:externals commnad:

svn:externals Test2 https://mydomain/Test2/trunk

但是当我更新Test3解决方案时,Test3中会出现以下结构:

Test3/
 Properties/
 Class3.cs
 Test3.csproj 
Test2
     Test2/
       Properties/
       Class2.cs
       Test2.csproj 
        Test1
          Properties/
          Class1.cs
          Test1.csproj
     Test2.sln
Test3.sln

但这不是理想的方法,因为我只希望Test1 dll检出不是Test1项目,并且为了构建Test3,我们必须首先构建驻留在Tes3 / Test2 / Test1 / Test1.csproj中的Test1项目,然后构建Test3 / Test2的.sln。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您是否有其他项目取决于Test2和Test3?如果不是,我建议对所有三个使用相同的存储库,只需将它们存储在不同的目录中。我有一个ERP项目,在同一个存储库中有几十个项目,效果很好。我只对链接到多个存储库的项目使用外部。

如果将Test2链接到Test3而不是Test1,则必须编译Test1并添加exe或dll的引用。但这可能不起作用,具体取决于您如何链接Test2和Test1。如果在项目级别链接Test2和Test1,则可能必须编译Test2以将其与Test3一起使用,因为您将有两个不同的实例(如果我理解正确)的Test2。一个是Test1,一个是Test3,没有Test1。

我建议将所有项目放在一个项目中,或者将它们全部单独编译,并在必要时将它们作为参考添加。