Вы можете добавить столько конфигураций, сколько захотите, в SolutionsToBuild (например, мы создаем несколько отдельных библиотечных решений, а затем два разных приложения, которые построены из одного и того же исходного кода (одно решение), но построены из двух конфигураций с использованием #define для изменить выходной код)
Вы получаете вызов только один раз, когда сборка завершается, но этот обработчик может затем выполнить столько процессов / шагов, сколько необходимо для развертывания результатов (в нашем случае мы собираем два скомпилированных приложения плюс загрузку файлов ресурсов в 10 различных специфичные для клиента установщики, так что после нашей сборки есть 10 «шагов», каждый из которых производит еще один конечный результат).
Вы можете поместить команды, чтобы встроить каждый из этих окончательных результатов в свою собственную цель, так что действительно легко включить / исключить различные результаты из сборки, если вам нужно регулярно разбивать и изменять вещи - но есть вероятность, что после настройки Вам не нужно будет часто менять его в любом случае. Тогда единственный код «особого случая», который должен знать о том, что все эти варианты построены, будет целью пост-сборки, которая будет просто зависеть от любых целей, которые вам нужны. Так что все заканчивается довольно аккуратно.