Я управлял нашей системой сборки на моей последней работе, которая, казалось, имела некоторые параллели с тем, что вы просите.
Было около 30 проектов C ++, которые требовали компиляции, а также различные вещи .NET / Java и странный сценарий perl.
Все это было построено на нашей сборочной машине с использованием NAnt. Если бы я делал это сегодня, я бы использовал rake , но идея та же.
В основном у нас был автоматически наращиваемый номер сборки, который хранился в файле version.txt в корне хранилища.
Каждый раз, когда мы выполняли сборку (автоматически выполняемую каждую ночь, или также по требованию, если необходимо), сценарий увеличивал это число и возвращал файл в систему контроля версий.
Все другие приложения ссылались на этот файл из-за номера версии или для вещей, которые не поддерживали такую работу, скрипт устанавливал переменные среды или выполнял другие обходные пути
- Я почти уверен, что наши программы installshield ссылались на переменную окружения в качестве номера версии, но мы устарели в пользу wix , так как installshield действительно сосал
- В случае Visual Studio, grep / заменить число в файлах .csproj и вернуть их обратно в
Надеюсь, это даст вам некоторые идеи