Условные конструкции MSBuild
Обновлен: Ноябрь 2007
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>