Поделиться через


Элемент Choose (MSBuild)

Вычисляет значения дочерних элементов, чтобы можно было выбрать один набор элементов ItemGroup или PropertyGroup для вычисления.

<Choose>
    <When Condition="'StringA'=='StringB'">... </When>
    <Otherwise>... </Otherwise>
</Choose>

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние элементы и родительские элементы.

Атрибуты

Отсутствует.

Дочерние элементы

Элемент

Описание

Otherwise

Необязательный элемент.

Задает элементы PropertyGroup и ItemGroup блок кода, чтобы можно было проверить, всем ли элементам When присвоено состояние false.В элементе Choose может присутствовать один элемент Otherwise, который должен стоять последним. Данный элемент может отсутствовать.

When

Обязательный элемент.

Задает один из возможных блоков кода для выбора с помощью элемента Choose.В элементе Choose может быть один или более элементов When.

Родительские элементы

Элемент

Описание

Otherwise

Задает блок кода, выполняемого в случае, когда всем элементам When присвоено состояние false.

Проект

Обязательный корневой элемент файла проекта MSBuild.

When

Задает один из возможных блоков кода для выбора с помощью элемента Choose.

Заметки

Элементы Choose, When и Otherwise можно использовать совместно, чтобы обеспечить возможность выбора и выполнения одного из нескольких возможных фрагментов кода.Дополнительные сведения см. в разделе Условные конструкции MSBuild.

Пример

В приведенном ниже проекте элемент Choose используется для выбора устанавливаемого набора значений свойств в элементах When.Если атрибутам Condition обоих элементов When оказывается равным false, устанавливаются значения свойств в элементе Otherwise.

<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>
        <Otherwise>
            <PropertyGroup>
                <DebugSymbols>true</DebugSymbols>
                <Optimize>false</Optimize>
                <OutputPath>.\bin\$(Configuration)\</OutputPath>
                <DefineConstants>DEBUG;TRACE</DefineConstants>
            </PropertyGroup>
        </Otherwise>
    </Choose>
    <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

См. также

Ссылки

Условные конструкции MSBuild

Основные понятия

Справочные сведения о схеме файлов проектов MSBuild