Несколько проектов 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.
Я бы порекомендовал либо поместить все проекты в один проект, либо скомпилировать их все отдельно и добавить их в качестве ссылок, где это необходимо.