MSBuild koşullu yapıları

MSBuild, Seç, Ne Zaman ve Değilse öğeleriyle işlem yapmak için bir mekanizma sağlar.

Choose öğesini kullanma

öğesi, Choose yukarıdan When aşağıya doğru test edilen ve değerlendirmesi yapılana kadar öznitelikleri trueolan Condition bir dizi öğe içerir. Birden When fazla öğe olarak truedeğerlendirilirse, yalnızca ilk öğe kullanılır. Bir Otherwise öğe, varsa, bir When öğedeki hiçbir koşul olarak değerlendirilmezse değerlendirilir true.

Chooseöğeleri, When ve Otherwise öğelerinin Projectalt öğeleri olarak kullanılabilir. When ve Otherwise öğelerinin ItemGroup, PropertyGroupveya Choose alt öğeleri olabilir.

Örnek

Aşağıdaki örnek, ve When öğelerini ya da işlemek için kullanırChoose. Projenin özellikleri ve öğeleri özelliğin Configuration değerine bağlı olarak ayarlanır.

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

Bu örnekte, derleyici sabitindeki DEFINED_CONSTANT bir koşul kullanılır. Bunlar özelliğine DefinedConstants dahil edilir. Normal ifade noktalı virgülle ayrılmış bir listede tam sabiti eşleştirmek için kullanılır.

<Choose>
   <When Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(
         $(DefineConstants), '^(.*;)*DEFINED_CONSTANT(;.*)*$'))">
      <!-- When DEFINED_CONSTANT is defined. -->
   </When>
   <!-- other conditions -->
</Choose>

Ayrıca bkz.