MSBuild Conditional Constructs

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

MSBuild fournit un mécanisme pour le traitement either/or à l'aide des éléments Choose, When et Otherwise.

L'élément Choose contient une série d'éléments When avec les attributs Condition testés dans l'ordre de haut en bas jusqu'à ce que l'un d'entre eux ait la valeur true. Si plusieurs éléments When ont la valeur true, seul le premier est utilisé. S'il existe, l'élément Otherwise sera analysé si aucune condition d'un élément When n'a la valeur true.

Les éléments Choose peuvent être utilisés comme les é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.

L'exemple suivant utilise les éléments Choose et When pour le traitement de type inclusif/exclusif. 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>  

Choose Element (MSBuild)
When Element (MSBuild)
Otherwise Element (MSBuild)
MSBuild Reference

Afficher: