Один из вариантов - перейти к решению для непрерывной интеграции, такому как Круиз-контроль .Net , которое позволяет запускать сборки при регистрации в системе контроля версий.
Что касается управления версиями сборки, то обычно я создаю один SolutionVersion.cs (для замены версии сборки по умолчанию cs), который связан с каждым проектом (используйте элемент добавления существующего, но измените кнопку, чтобы добавить ссылку)
Затем я использую задачу NAnt или MSBuild, чтобы взять номер метки сборки круиз-контроля и переписать номера версий SolutionVersion.cs до того, как решение будет построено
Таким образом, я могу взять сборку и проследить ее обратно к коду через версию сборки CruiseControl (еще лучше, когда я обычно заставляю CC.net пометить источник с тем же номером в управлении исходным кодом)