У меня есть решение Visual Studio, содержащее более 30 проектов. Существует две конфигурации сборки: Debug и Release. Десять файлов проекта ( .csproj ) генерируются достаточно часто с использованием внешнего инструмента, и шаблоны для этого поколения включают в себя конфигурации Debug и Release. Изменение шаблонов для включения дополнительных конфигураций на самом деле не вариант.
Итак, у меня проблема в том, что у меня есть новый проект, размещенный в AppFabric / IIS. Я использую преобразования Web.Config, чтобы обновить Web.Config для развертывания в 4 различных средах: Разработка, Тестирование, Подготовка, Производство. Я добавил эти контексты в конкретный проект с помощью Configuration Manager. Это работает, поэтому я могу обновить Configuration Manager, например, для Выпуск сборки для использования производственного контекста для проекта. Щелчок правой кнопкой мыши и создание пакета развертывания для проекта приводит к соответствующему преобразованию, применяемому к Web.Config.
Теперь я хочу автоматизировать процесс, поэтому у меня есть скрипт MSBuild:
<ItemGroup>
<BuildMode Include="Dev"/>
<BuildMode Include="Test"/>
<BuildMode Include="Staging"/>
<BuildMode Include="Prod"/>
</ItemGroup>
<Target Name="Build" DependsOnTargets="Package"></Target>
<!--
Build deployment package for each target environment
-->
<Target Name="Package" Outputs="%(BuildMode.Identity)">
<Message Text="Building %(BuildMode.Identity)"/>
<MSBuild Projects="..\SynchWorkflow\SynchWorkflow.csproj"
Targets="Package"
Properties="Platform=AnyCPU;Configuration=%(BuildMode.Identity);"/>
</Target>
К сожалению, это ошибка, потому что он пытается построить, например. Prod конфигурация, когда она не существует - Prod является только контекстом для проекта SynchWorkflow. Я хочу создать контекстный пакет Prod , используя конфигурацию Release . Возможно ли это с помощью задачи MSBuild ? Есть ли дополнительный параметр, который я могу предоставить для задачи MSBuild в атрибуте Properties , который позволил бы это?