2013-07-21 35 views
0

我想管理一個包含多個項目的解決方案,並將它們分別放在它們自己的存儲庫結構(分支/標記/中繼)中。 我有一個項目的Test1和我提交到自己的倉庫:多個Subversion項目及其在Visual Studio中使用Subversion的依賴

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

我有另一個項目的Test2和我提交到自己的倉庫和TEST2取決於Test1.I使用svn:enxternals作在Test2中引用Test1,然後在Visual Studio中右擊解決方案Test2,然後在Add-> Existing Project中添加Test1。

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

,我有另一個項目Test3的依賴的Test2:

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時出現錯誤。

爲了解決這個問題,我使用下面的SV:在Test3的存儲庫的外部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

您是否有其他項目取決於Test2和Test3?如果不是,我會建議使用三個相同的存儲庫,只是將它們存儲在不同的目錄中。我有一個在同一個知識庫中有幾十個項目的ERP項目,它運作良好。我只將外部項目用於鏈接到多個存儲庫的項目。

如果你將Test2連接到Test3但不是Test1,那麼你必須編譯Test1並添加一個exe或dll的引用。但是這可能不起作用,這取決於你如何鏈接Test2和Test1。如果您在項目級別鏈接Test2和Test1,則可能必須編譯Test2才能在Test3中使用Test2,因爲Test2將有兩個不同的實例(如果我瞭解您的話)。一個獨立於Test1,一個獨立於Test3而沒有Test1。

我會推薦將所有的項目放在一個單獨的項目中,或者單獨編譯它們並在需要的時候添加它們作爲參考。

相關問題