Недавно на работе мы столкнулись с проблемой, когда мы пометили / разветвили проект и столкнулись с некоторыми проблемами компиляции из-за ссылок на dll / project, которые указывали на старую структуру папок.
Мы создали папку «external bin» для каждого из проектов и скопировали упомянутые dll в эти папки. Это лучший способ или есть определенный отраслевой стандарт для этого?
На самом деле это не так - Microsoft говорит, что лучший способ справиться со ссылками - построить ваш проект в одном огромном решении. Да, я знаю, они действительно имеют в виду это тоже.
Команда по шаблонам и практикам объединила свои лучшие практики в отношении TFS, но это применимо к общим сборкам. Существует 3 типа установки решения: «1 большое решение», многораздельный подход, который во многом похож на то, как большинство людей использовали для управления сборками, собирая по очереди и копируя артефакты в общий каталог (который не помог .NET не наличие общесерверного пути «include» или «library» к ссылке) и настройка Multiple Solution, которая является более сложной версией Partitioned.
Они говорят
Для TFS они рекомендуют ветвить любые внешние проекты внутри вашего проекта, а не полагаться на отображение рабочей области, которое больше похоже на внешние эффекты Subversion. Лично я думаю, что их советы не являются лучшей практикой, но я предполагаю, что они пытаются минимизировать любые проблемы сборки, которые вы получите при использовании ссылок.
У меня были проблемы со сборками .NET, которые пытаются урезать систему, создавая только то, что нужно, ночная сборка, которая делает все и копирует каждую новую сборку в каталог, была лучшим способом для всех синхронизироваться - особенно для тестировщиков. Обратите внимание, что это действительно относится только к приложениям .NET, приложения C ++, как правило, все еще работают, потому что у них нет сборок с версиями или подобных аспектов, которые могут вызвать проблемы с вызовом компонентов. Этот подход работает хорошо, но вы не всегда можете предположить, что частичные сборки в порядке, все это сводится к нулю, и перестройка является наиболее безопасной.
источник
Это зависит от того, как структурировано ваше решение и каковы ваши возможности программного обеспечения для контроля версий. Раньше в наших решениях мы использовали несобранный / пропущенный проект, в котором содержалась документация и папка специально для любых сторонних библиотек, на которые есть ссылки. Поскольку это было частью решения, путь к этим файлам можно ссылаться с использованием относительного пути. После того, как мы перешли на TFS 2010, избавились от этого проекта и просто добавили каталог «Поддержка» в папке этого решения в командном проекте параллельно нашим основным ветвям. В любом случае версия библиотеки управления исходным кодом оказывается в одном и том же месте относительно независимо от того, как разработчики настроили свои машины.
источник
При использовании Subversion для контроля версий, вы можете использовать свойство "externals" для этой цели. Это позволяет вам хранить локальную копию общей библиотеки DLL в относительном пути рядом с вашим текущим проектом. Это позволяет легко ссылаться на эту DLL по относительному пути к файлу, который не изменяется, даже если вы измените основной каталог вашего проекта на другую папку. Внешние позволяют вам также определить, какую конкретную версию или ревизию включить.
источник