我想管理一个包含多个项目的解决方案,并将每个项目放在他们自己的存储库结构(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。
解决此问题的最佳方法是什么?
答案 0 :(得分:0)
您是否有其他项目取决于Test2和Test3?如果不是,我建议对所有三个使用相同的存储库,只需将它们存储在不同的目录中。我有一个ERP项目,在同一个存储库中有几十个项目,效果很好。我只对链接到多个存储库的项目使用外部。
如果将Test2链接到Test3而不是Test1,则必须编译Test1并添加exe或dll的引用。但这可能不起作用,具体取决于您如何链接Test2和Test1。如果在项目级别链接Test2和Test1,则可能必须编译Test2以将其与Test3一起使用,因为您将有两个不同的实例(如果我理解正确)的Test2。一个是Test1,一个是Test3,没有Test1。
我建议将所有项目放在一个项目中,或者将它们全部单独编译,并在必要时将它们作为参考添加。