У меня возникли проблемы с поведением автоматической проверки проекта VS2010 (Файл -> Управление исходным кодом -> Открыть из управления исходным кодом).Речь идет конкретно о Microsoft Unity, но обычно о структурировании общих зависимостей.
Предположим, что эта структура TFS
$/
Project1/
Project2/
Microsoft/
UnityQuickStarts/
UnitySource/
Lib/
Source/
Common/
Unity/
Src/
Tests/
Unity.Configuration/
Unity.Interception/
Unity.Interception.Configuration/
Unity.Silverlight/
Предположим, что в $/Project1
есть Project1.sln
и Project1.vbproj
, которыеимеет ссылку на проект $/Microsoft/UnitySource/Source/Unity/Src/Unity.2010.csproj
.
Когда я запрашиваю, чтобы VS2010 открыл решение Project1.sln
из Source Control, ему удается получить проект Unity, но только его часть.В частности, он не осознает, что в проекте $/Microsoft/UnitySource/Lib
есть двоичные зависимости, и не осознает, что в $/Microsoft/UnitySource/Source/Common
есть необходимый файл кода.Они расположены над корнем проекта Unity.
Точная структура папок зависит от того, добавляю ли я проект Unity из системы контроля версий в существующее решение или открываю все решение.
Единственный способ заставить его работать - это вручную добавить проект $/Microsoft/UnitySource
в рабочую область и «Получить последнюю версию».Оттуда я могу добавить проект Unity.2010.csproj
к решению, и все будут довольны, по крайней мере, до тех пор, пока мне не понадобится снова получить проект, когда TFS не получит все файлы.
Итак, сделали паттерны Micrsoftи группа специалистов-практиков создают структуру проекта, которая плохо работает с TFS / VS2010, или, более вероятно, я неправильно структурирую проекты?Unity может использоваться как Project1
, так и Project2
, поэтому не представляется целесообразным использовать его в обоих проектах.
Спасибо.
ОБНОВЛЕНИЕ: Уточнениевопрос: общий файл решения для Unity $\Microsoft\UnitySource\Source\Unity.2010.sln
.Если я прошу VS2010 открыть это решение из системы контроля версий, он получит только проект Source
и его дочерние элементы.В частности, проект $\Microsoft\UnitySource\Lib
отсутствует, поэтому в Unity отсутствует одна из его зависимостей, Microsoft.Practices.ServiceLocator.dll.
Есть ли у TFS или VS2010 способ «управлять» этими внешними зависимостями?Нужно ли размещать эти общие зависимости над / рядом с другими проектами (как это сделала команда p & p с Unity) и учитывать тот факт, что TFS / VS2010 не «делает правильные вещи», вручную назначая правильное сопоставление папок?