Partager via


When, élément (MSBuild)

Mise à jour : novembre 2007

Spécifie un bloc de code qui peut être sélectionné par l'élément Choose.

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

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut

Description

Condition

Attribut requis.

Condition à évaluer. Pour plus d'informations, consultez Conditions MSBuild.

Éléments enfants

Élément

Description

Choose

Élément facultatif.

Évalue des éléments enfants pour sélectionner une section de code à exécuter. Un élément When peut ne contenir aucun élément Choose ou en contenir plusieurs.

ItemGroup

Élément facultatif.

Contient un ensemble d'éléments Item définis par l'utilisateur. Un élément When peut ne contenir aucun élément ItemGroup ou en contenir plusieurs.

PropertyGroup

Élément facultatif.

Contient un ensemble d'éléments Property définis par l'utilisateur. Un élément When peut ne contenir aucun élément PropertyGroup ou en contenir plusieurs.

Éléments parents

Élément

Description

Choose, élément (MSBuild)

Évalue des éléments enfants pour sélectionner une section de code à exécuter.

Notes

Si l'attribut Condition a la valeur true, les éléments ItemGroup et PropertyGroup enfants de l'élément When sont exécutés et tous les éléments When suivants sont ignorés.

Les éléments Choose, When et Otherwise sont utilisés ensemble pour permettre la sélection d'une section de code spécifique à exécuter parmi plusieurs alternatives possibles. Pour plus d'informations, consultez Constructions conditionnelles MSBuild.

Exemple

Le projet suivant utilise l'élément Choose pour sélectionner le jeu de valeurs des propriétés des éléments When à définir. Si les attributs Condition des deux éléments When ont la valeur false, les valeurs des propriétés dans l'élément Otherwise sont définies.

<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>

Voir aussi

Concepts

Référence du schéma de fichier de projet MSBuild

Référence

Constructions conditionnelles MSBuild