Подтвердить что ты не робот

TFS и библиотеки DLL со ссылками

Мы используем TFS и VS 2010.

Я работал над проектом, который использует TFS в качестве источника контроля. У меня есть довольно много dll, которые я скачал (например, log4net) и на которые ссылается мой проект.

Когда новый программист подключился к TFS и вывел мой проект из-под контроля исходного кода, он не смог собраться, так как сказал, что пропускает все эти указанные библиотеки.

Что я тут не так сделал? Как я могу включить эти библиотеки DLL в системе контроля версий. Нужно ли добавлять все эти библиотеки в мой проект, прежде чем ссылаться на них? когда я ссылался на них, я просто просматривал их в моей файловой системе.

4b9b3361

Ответ 1

Я нашел, что лучшей практикой для сторонних DLL является создание папки "Библиотека" в вашей структуре файлов sln/proj и копирование всех необходимых DLL в эту локальную папку для справки. Вы также захотите, чтобы эти DLL были проверены в исходном элементе управления. Таким образом, каждый, кто работает над проектом, получает одинаковые версии всех DLL, а ссылочные пути - точно такие же.

Ссылка на сторонние библиотеки в произвольном месте загрузки или установки будет проблематичной, поскольку для всех разработчиков потребуется поддерживать одну и ту же структуру загрузки для всех DLL. Кроме того, если все ссылаются на библиотеки DLL за пределами структуры проекта, все труднее гарантировать, что все будут в одной и той же версии.

Другим вариантом было бы, чтобы все устанавливали DLL в GAC, но это может быть и реальной болью, особенно с управлением версиями и развертыванием.

Ответ 2

Я создал папку "ThirdPartyDLL" в моей папке проекта, в которой я скопировал все дополнительные библиотеки DLL. Затем я отправился в источник-проводник и добавил эти библиотеки DLL на сервер фундаментов команды, поэтому я мог быть уверен, что использую правильные версии DLLS для определенных версий моего приложения (и поэтому все остальные находятся на той же странице, что и я).

Просмотр - другие окна - Источник coontrol explorer Щелкните правой кнопкой мыши папку проекта - добавьте элементы в папку

Вы не сможете выбрать определенную папку с DLL в ней, но вместо этого вы можете выбрать отдельные DLL файлы в папке. Затем вы увидите папку "ThirdPartyDLL" в этом окне.

Как только это будет сделано, эти DLL находятся в исходном элементе управления командой. Всякий раз, когда разработчик проверяет, они будут получать самую последнюю версию DLL.

Не забудьте удалить старые ссылки в своем приложении и изменить их в свою папку thirdpartydll.

Я использовал для копирования DLL в папку bin, но проблема, с которой я столкнулся, заключалась в том, когда библиотеки DLL были обновлены. Первоначально, когда мой проект был небольшим, это было неважно. Теперь, когда у меня есть несколько DLL и приложений, которые я создал, стало очень сложно поддерживать согласованные версии DLL вне моего проекта. Мой лучший пример - лицензионная dll, которую я приобрел. Когда это было обновлено, все приложения и библиотеки должны быть в одной версии. Если я забыл, тогда у меня были странные проблемы или приложение просто перестало работать. Теперь, когда у меня есть все в одной папке, я делаю изменения один раз, и все обновляется.

Надеюсь, что это поможет.

Ответ 3

Идея Энди хорошая, и я использовал это в прошлом. На моей текущей задаче у нас есть "справочная" папка на сетевом ресурсе для всех нас, из которого вы можете строить. У нас здесь очень быстрая сеть, хотя все разработчики находятся в одном офисе. Это решение не будет работать, если у вас много удаленных разработчиков или медленная сеть.

Ответ 4

Я пробовал различные методы для решения этой проблемы и решил убрать требуемую dll в папке bin и убедиться, что они включены в проект для управления версиями. Я слышал, что люди говорят, что это может быть не очень хорошая идея, но никто не дал достаточных оснований для этого, и это сработало для меня.

Моим вторым выбором было бы выделить какое-то место на сетевом ресурсе и организовать там различные сторонние DLL. Вы можете поместить свои файлы в папки с верионными номерами, чтобы держать все в порядке, и каждый должен иметь доступ ко всему, что им нужно, до тех пор, пока все используют обычные сетевые пути в качестве ссылки.

Добавление отдельной папки в проект также работоспособно, но кажется беспорядочным, поскольку в итоге вы получаете дополнительные файлы, которые вы не хотите включать в свою версию.