Constructions conditionnelles MSBuild
MSBuild fournit un mécanisme de traitement de type « soit/soit » avec les éléments Choose, When et Otherwise.
Utiliser l’élément Choose
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 avec la valeur true
soit trouvé. Si plusieurs éléments When
ont la valeur true
, seul le premier est utilisé. Un élément Otherwise
(si présent) est évalué si aucune condition d’un élément When
n’a la valeur true
.
Les éléments Choose
peuvent être utilisés comme des éléments enfants des éléments Project
, When
et Otherwise
. Les éléments When
et Otherwise
peuvent avoir des éléments enfants ItemGroup
, PropertyGroup
ou Choose
.
Exemple
L’exemple suivant utilise les éléments Choose
et When
pour un traitement de type « soit/soit ». Les propriétés et les éléments du projet sont définis en fonction de la valeur de la propriété Configuration
.
<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>
</Choose>
<!-- Rest of Project -->
</Project>
Dans cet exemple, une condition sur une constante DEFINED_CONSTANT
du compilateur est utilisée. Ils sont inclus dans la propriété DefinedConstants
. L’expression régulière est utilisée pour mettre en correspondance la constante exacte dans une liste séparée par des points-virgules.
<Choose>
<When Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(
$(DefineConstants), '^(.*;)*DEFINED_CONSTANT(;.*)*$'))">
<!-- When DEFINED_CONSTANT is defined. -->
</When>
<!-- other conditions -->
</Choose>
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour