Как правило, наилучшей практикой является использование NuGet.
По крайней мере, для пакетов, которые не являются внутренними, вы должны использовать NuGet. Скажем, для EF, BundleTransformer & и так далее.
Для этого вы должны включить восстановление пакета NuGet и извлечь все необходимое из NuGet Feed. Подробнее здесь: http://docs.nuget.org/consume/package-restore/msbuild-integrated
Для внутренних dll вы можете создать внутренний канал NuGet: https://docs.nuget.org/create/hosting-your-own-nuget-feeds и получить пакеты оттуда или скопировать их в свой проект.
Не забудьте включить файлы в проект, если вы скопируете их «вручную», и я думаю, что это хорошее начало.
Есть другие лучшие практики, такие как отсутствие ссылки на что-либо из GAC и перемещение всех DLL/зависимостей/ссылок на NuGet или создание исходной папки «Библиотека/Поставщик» в вашем проекте и копирование всех необходимых DLL (проблема вот то, что вы проверяете все элементы управления dll для источника), но вы будете уверены, что каждый получит точную ту же версию/ссылку & и так далее, потому что файлы хранятся там (физически).
не обсуждается, не ссылаясь на вещи в GAC, красиво положил! –