Мы контролируем версии наших сторонних сборок, используя Subversion, затем перетаскиваем их через svn: externals в подкаталог рассматриваемого решения или проекта, который затем ссылается на них (и копирует в bin) .
Это дает довольно много преимуществ:
- Серверы сборки более счастливы, требуют меньшего количества обслуживания и менее хрупки.
- У нас есть история выпусков, и мы можем явно контролировать управление версиями для каждого решения / проекта, устанавливая номер редакции для каждого svn: external. Например, код транка может использовать последнюю версию Telerik, но ветки выпуска используют старые версии.
- Мы можем делиться сторонними сборками для разных проектов и быть уверенными, что они используют правильные версии.
- Мы не полагаемся на то, что разработчики устанавливают или обновляют до нужной версии, однако они могут добавлять и тестировать новые версии, не мешая другим проектам (при условии, что вы явно определили ревизию)
- Мы можем тестировать новые версии, но легко возвращаемся, если что-то не работает.
Так что немного больше работы по настройке, но я думаю, это того стоит. Обратите внимание, что мы не контролируем версии (svn: ignore) наших каталогов bin и obj, и сторонние сборки находятся в одном и том же хранилище Subversion, на которое ссылается относительный путь.
FWIW: Subversion 1.6.6 исправляет досадную ошибку для файловых svn: externals. Это означает, что вы можете выбрать один или несколько файлов (например, сборок) из каталога вместо того, чтобы тянуть весь каталог вниз.
2013 Обновление
С появлением NuGet рассмотрите возможность размещения собственного фида через локальный сервер, прежде чем использовать svn: externals, просто потому, что он дает вам те же преимущества, плюс он запекается в Visual Studio через Extension Manager и обеспечивает лучшую информацию и метаданные, например, возможность сообщить разработчикам о выходе новой версии.
Единственным предостережением будет размещение вашего канала с использованием сервера Win2008 или выше, так как я столкнулся с некоторыми проблемами с нашим старым сервером Win2003, использующим SSL с аутентификацией Windows для обеспечения безопасности канала. Я полагаю, что это произошло из-за более старой версии IIS, используемой в Win2003, но не смог проверить.