Условные конструкции MSBuild
MSBuild предоставляет механизм для обработки ситуации выбора с помощью элементов Choose, When и Otherwise.
Использование элемента Choose
Элемент Choose содержит последовательность элементов When с атрибутами Condition, которые проверяются сверху вниз, пока для одного из них не будет получен результат true.Если более чем для одного элемента When получен результат true, используется только первый элемент.Элемент Otherwise, если он есть, будет обрабатываться в случае, если ни для одного условия в элементах When не был получен результат true.
Элементы Choose можно использовать в качестве дочерних элементов для элементов Project, When и Otherwise.Элементы When и Otherwise могут иметь дочерние элементы ItemGroup, PropertyGroup или Choose.
Пример
В следующем примере элементы Choose и When используются для обработки ситуации выбора.Свойства и элементы для данного проекта устанавливаются в зависимости от значения свойства Configuration.
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<OutputType>Exe</OutputType>
<RootNamespace>ConsoleApplication1</RootNamespace>
<AssemblyName>ConsoleApplication1</AssemblyName>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<Choose>
<When Condition=" '$(Configuration)'=='Debug' ">
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>.\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Compile Include="UnitTesting\*.cs" />
<Reference Include="NUnit.dll" />
</ItemGroup>
</When>
<When Condition=" '$(Configuration)'=='retail' ">
<PropertyGroup>
<DebugSymbols>false</DebugSymbols>
<Optimize>true</Optimize>
<OutputPath>.\bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
</When>
</Choose>
<!-- Rest of Project -->
</Project>