Из более долгосрочного решения не уверен, будет ли это работать в вашей среде, но у нас есть несколько зависимых проектов (от фреймворков до зависимых систем), на которые мы ссылаемся. Мы используем subversion и используем внешние ссылки для ссылки на папки libary / source, чтобы все зависимые проекты ссылались на одну и ту же версию.
У нас также есть несколько проектов, в которые мы добавляем зависимые библиотеки, которые могли использовать более старую версию, когда она была скомпилирована, чем более новую и обратно совместимую разделяемую библиотеку, которую включило основное ссылочное приложение, и в этом случае мы используем решение для нескольких версий , использующее запись конфигурации.
На самом деле у нас есть наш штамп процесса сборки в чем-то вроде (где _BUILD_VERSION_ заменяется процессом сборки с текущим номером сборки):
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Company.DependentAssembly" publicKeyToken="8510b56c219df72e"/>
<bindingRedirect oldVersion="1.0.0.0-99.0.0.0" newVersion="_BUILD_VERSION_"/>
</dependentAssembly>
В той же статье также есть ссылка на несколько версий одной и той же сборки в проекте.