Самый простой способ, который я могу придумать, сохраняя при этом большую часть текущей инфраструктуры: иметь выделенный проект, который вызывает сборку релиза (вычисляя зависимости и вызывая msbuild) и настраивая VS, чтобы можно было выбрать только этот проектдля сборки.Все изнутри вашего ALL.sln, поэтому остальные функции остаются.Шаги:
Избавьтесь от проектов PreBuild / PostBuild.Я предполагаю, что PostBuild, который вы упоминаете, также предназначен для фактических сборок релиза;если не просто оставить его там.Обратите внимание, что не требуя, чтобы все проекты зависели от проекта PreBuild, вы уже избавились от одного бремени обслуживания.
Добавьте один единственный проект, который будет выполнять сборку релиза, скажем ReleaseBuild
.Такое имя также лучше, чем проекты PreBuild / PostBuild, так как оно четко определяет цель проекта.Подойдет проект Makefile, хотя технически он может быть таким же простым, как файл msbuild с одной целью Build.Сконфигурируйте командную строку сборки так, чтобы она делала все, что нужно, т.е. выясняла, что собирать, а затем собиратьДля примера: скажем, вы используете Powershell, чтобы сделать это, вы должны настроить командную строку для сборки на
Powershell -NoProfile -File BuildRelease.ps1 $(Platform)
, а BuildRelease.ps1 содержит что-то вроде
$projectsToRelease = CalculateMyProjectsForRelease()
$platform = $Args[0]
$projectsToRelease | %{& msbuild $_ "/p:Configuration=Release;Platform=$platform"}
В Configuration Manager добавьте дополнительную конфигурацию с именем Deploy
или около того.Это будет использоваться для выбора того, что собирать: у вас, вероятно, уже есть конфигурации Debug и Release.Они остаются на месте и просто используются, чтобы построить все.Идея в том, что эта дополнительная конфигурация позаботится о создании реальной версии.Это вполне соответствует стандартному способу работы в VS, и его легко обнаружить и понять новичкам.Используя флажки, сделайте так, чтобы, когда выбрана конфигурация Deploy, была собрана только ReleaseBuild и ни одна из других, тогда как при выборе Debug или Release проект ReleaseBuild не создается.Выглядит это так:
Чтобы создать релиз, выберите Deploy в раскрывающемся меню конфигурации на панели инструментов VS и нажмите F7 (или любой другой способ вызова Build Solution).,Любые ошибки / предупреждения сборки будут проанализированы и показаны, как обычно, в списке ошибок.
Это также легко расширить: предположим, у вас есть только несколько версий сборочных выпусков, просто добавьте больше конфигураций, таких как DeployA DeployB DeployC, и настройтекомандная строка сборки для них.