0

我想管理一个包含多个项目的解决方案,并将它们中的每一个放在自己的存储库结构(分支/标签/主干)中。我有一个项目 Test1 并将其提交到它自己的存储库:

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

我有另一个项目Test2,我将它提交到它自己的存储库,Test2依赖于Test1。我使用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。

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

4

1 回答 1

0

你有其他依赖于 Test2 和 Test3 的项目吗?如果不是,我建议对所有三个使用相同的存储库,只需将它们存储在单独的目录中。我有一个 ERP 项目,在同一个存储库中有几十个项目,它运行良好。我只对链接到多个存储库的项目使用外部。

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

我建议要么将所有项目放在一个项目中,要么分别编译它们并在需要时将它们作为参考添加。

于 2013-08-22T14:04:23.713 回答