Choose, élément (MSBuild)

Évalue des éléments enfants pour sélectionner un ensemble d’éléments ItemGroup et/ou d’éléments PropertyGroup à évaluer.

<Projet><Choisir><Quand><Choisir> ... <Autrement><Choisir> ...

L’élément Choose contient une série d’éléments When avec des attributs Condition qui sont testés du haut vers le bas, jusqu’à ce qu’un élément soit trouvé « true ». Si plusieurs éléments When ont la valeur « true », seul le premier est utilisé. Si un élément Otherwise est présent, il est évalué si aucune condition d’un élément When n’a la valeur « true ».

Syntaxe

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

Attributs et éléments

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

Attributs

Aucune.

Éléments enfants

Élément Description
Otherwise Élément facultatif.

Spécifie le bloc de code PropertyGroup et les éléments ItemGroup à exécuter si les conditions de tous les éléments When correspondent à la valeur false. Un élément Choose peut ne contenir aucun élément Otherwise ou en contenir un seul qui doit figurer en dernière position.
Quand Élément requis.

Spécifie un bloc de code que l’élément Choose peut sélectionner. Un élément Choose peut contenir un ou plusieurs éléments When.

Éléments parents

Élément Description
Otherwise Spécifie le bloc de code à exécuter si les conditions de tous les éléments When correspondent à la valeur false.
Projet Élément racine requis d’un fichier projet MSBuild.
Quand Spécifie un bloc de code que l’élément Choose peut sélectionner.

Remarques

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 options possibles. Pour plus d’informations, consultez Constructions conditionnelles.

Exemple

Le projet suivant utilise l’élément Choose pour sélectionner l’ensemble de valeurs de propriété à définir dans les éléments When. Si les attributs Condition des deux éléments When s’évaluent à false, les valeurs des propriétés dans l’élément Otherwise sont définies.

<Project
    xmlns="http://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