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


Элемент Choose (MSBuild)

Обновлен: Ноябрь 2007

Оценивает значения дочерних элементов, чтобы можно было выбрать один набор элементов 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.

Project

Обязательный корневой элемент файла проекта 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