Несколько проектов Subversion и их зависимость от Subversion в Visual Studio

Я хочу управлять решением с несколькими проектами и поместить каждый из них в свою собственную структуру хранилища (ветки / теги / ствол). У меня есть проект Test1, и я фиксирую его в своем собственном хранилище:

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

У меня есть другой проект Test2, и я фиксирую его в своем собственном репозитории, и Test2 зависит от Test1.Я использую svn: enxternals, чтобы сделать ссылку на Test1 в Test2, а затем в Visual Studio щелкните правой кнопкой мыши решение Test2 и затем Add-> Existing Проект, добавь 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: externals commnad в репозитории Test3:

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 мы должны сначала построить проект Test1, который находится в Tes3 / Test2 / Test1 / Test1.csproj, а затем собрать Test3 / Test2.sln.

Каков наилучший подход к решению этой проблемы?

1 ответ

Есть ли у вас другие проекты в зависимости от Test2 и Test3? Если нет, то я бы рекомендовал использовать один и тот же репозиторий для всех трех, просто храните их в отдельных каталогах. У меня есть проект ERP с десятками проектов в одном хранилище, и он работает хорошо. Я использую только внешние объекты для проектов, связанных с несколькими хранилищами.

Если вы связываете Test2 с Test3, но не с Test1, вы должны скомпилировать Test1 и добавить ссылку на exe или dll. Но это может не сработать в зависимости от того, как вы связываете Test2 и Test1. Если вы связываете Test2 и Test1 на уровне проекта, вам, возможно, придется скомпилировать Test2, чтобы использовать его с Test3, потому что у вас будет два разных экземпляра (если я вас правильно понимаю) Test2. Один с Test1 и один с Test3 без Test1.

Я бы порекомендовал либо поместить все проекты в один проект, либо скомпилировать их все отдельно и добавить их в качестве ссылок, где это необходимо.

Другие вопросы по тегам