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


Элемент When (MSBuild)

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

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

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

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

Атрибуты

Атрибут

Описание

Атрибут Condition

Обязательный атрибут.

Проверяемое условие.Дополнительные сведения см. в разделе Условия MSBuild.

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

Элемент

Описание

Выберите

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

Вычисляет дочерние элементы с целью выбора одного блока кода для выполнения.Элемент When может содержать любое число элементов Choose, включая ноль.

ItemGroup

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

Этот элемент содержит набор определяемых пользователем элементов Item.Элемент When может содержать любое число элементов ItemGroup, включая ноль.

PropertyGroup

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

Этот элемент содержит набор определяемых пользователем элементов Property.Элемент When может содержать любое число элементов PropertyGroup, включая ноль.

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

Элемент

Описание

Элемент Choose (MSBuild)

Вычисляет дочерние элементы с целью выбора одного блока кода для выполнения.

Заметки

Если значение атрибута Condition оказывается равным true, выполняются дочерние элементы ItemGroup и PropertyGroup элемента When, а все последующие элементы When пропускаются.

Элементы 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