Это решение, которое я выбрал.
У меня есть каждый проект в ссылке на решение для CommonAssemblyInfo.cs, который автоматически генерируется для меня сценариями сборки (rake + albacore).
Поскольку я не могу проверить CommonAssemblyInfo.cs в системе контроля версий, я создаю CommonAssemblyInfo.cs.local.
Простое решение: создайте go.bat, который копирует CommonAssemblyInfo.cs.local в CommonAssemblyInfo.cs, которые должны запускаться разработчиками при первой проверке проекта перед открытием решения в VS.
По чисто политическим причинам, если бы я сделал это, у людей были бы шокирующие мысли о том, что я делаю "нестандартные" вещи. Комплексное решение следующее:
Я создал проект в решении под названием PreBuild, от которого зависит каждый проект в решении. Это заставляет порядок сборки быть таким, что этот проект создается первым. Этот проект содержит событие предварительной сборки, которое вызывает следующий пакетный файл:
echo verifying CommonVersionInfo.cs exists
cd
IF NOT EXIST ..\..\..\CommonAssemblyInfo.cs COPY ..\..\..\CommonAssemblyInfo.cs.local ..\..\..\CommonAssemblyInfo.cs
Так что теперь любой разработчик, который решил держать голову в песке, может проверить проект и открыть его в VS, не подозревая, что какие-либо сценарии сборки существуют вообще.