When öğesi (MSBuild)

Öğesinin seçecek olası bir kod bloğunu Choose belirtir.

<Proje><Seçimi><Ne Zaman><Seç> ... <Aksi takdirde><.> ..

Sözdizimi

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

Öznitelikler ve öğeler

Öznitelikler, alt ve üst öğeler aşağıdaki bölümlerde açıklanmaktadır.

Özellikler

Öznitelik Açıklama
Koşul Gerekli öznitelik.

Değerlendirilecek koşul. Daha fazla bilgi için bkz . Koşullar.

Alt öğeleri

Öğe Açıklama
Seçin İsteğe bağlı öğe.

Yürütülecek kodun bir bölümünü seçmek için alt öğeleri değerlendirir. Bir When öğede sıfır veya daha fazla Choose öğe olabilir.
Itemgroup İsteğe bağlı öğe.

Kullanıcı tanımlı Öğe öğeleri kümesi içerir. Bir When öğede sıfır veya daha fazla ItemGroup öğe olabilir.
Propertygroup İsteğe bağlı öğe.

Kullanıcı tanımlı Özellik öğeleri kümesi içerir. Bir When öğede sıfır veya daha fazla PropertyGroup öğe olabilir.

Üst öğeler

Öğe Açıklama
Choose öğesi (MSBuild) Yürütülecek kodun bir bölümünü seçmek için alt öğeleri değerlendirir.

Açıklamalar

Özniteliği true Condition olarak değerlendirilirse, alt ItemGroup öğe ve PropertyGroup öğesinin When öğeleri yürütülür ve sonraki When tüm öğeler atlanır.

Choose, Whenve Otherwise öğeleri, bir dizi olası alternatifi yürütmek üzere kodun bir bölümünü seçmenin bir yolunu sağlamak için birlikte kullanılır. Daha fazla bilgi için bkz . Koşullu yapılar.

Örnek

Aşağıdaki proje, öğelerinde ChooseWhen ayarlanacağı özellik değerleri kümesini seçmek için öğesini kullanır. Condition Her iki When öğenin öznitelikleri olarak değerlendirilirsefalse, öğesindeki Otherwise özellik değerleri ayarlanır. Örneği çalıştırırken, komut satırından msbuild myproj.proj -p:Configuration=Test;Platform=x86gibi çeşitli özellik ayarlarını geçirmeyi deneyin ve çıkış yolunun nasıl göründüğüne bakın. Örnekte, hata ayıklama ve sürüm derlemeleri için gerçek platform adı yerine platformun bitliğine göre çıkış klasörü de dahil olmak üzere belirli özelliklerin ayarlanması ve 'Test' ve 'Perakende' yapılandırmalarının desteklenip 'Perakende' olarak 'Yayın' olarak ele alındığı varsayılır.

<Project>
    <PropertyGroup>
       <Configuration Condition="$(Configuration) == ''">Debug</Configuration>
       <Platform Condition="$(Platform) == ''">x64</Platform>
    </PropertyGroup>

  <Choose>
     <When Condition="$(Configuration)=='Test'">
        <PropertyGroup>
            <DebugSymbols>true</DebugSymbols>
            <DebugType>full</DebugType>
            <Optimize>false</Optimize>
            <DefineConstants>DEBUG;TRACE</DefineConstants>
        </PropertyGroup>
        <Choose>
          <When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
            <PropertyGroup>
                <OutputPath>.\bin\Test\32-bit\</OutputPath>
            </PropertyGroup>
          </When>
          <When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
            <PropertyGroup>
                <OutputPath>.\bin\Test\64-bit\</OutputPath>
            </PropertyGroup>
          </When>
          <!-- For any other platform, use the platform name -->
          <Otherwise>
            <PropertyGroup>
              <OutputPath>.\bin\Test\$(Platform)\</OutputPath>
            </PropertyGroup>
          </Otherwise>
        </Choose>
      </When>
      <When Condition="$(Configuration)=='Retail' Or $(Configuration)=='Release'">
        <PropertyGroup>
            <DebugSymbols>false</DebugSymbols>
            <Optimize>true</Optimize>
            <DefineConstants>TRACE</DefineConstants>
        </PropertyGroup>
        <Choose>
          <When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
             <PropertyGroup>
                <OutputPath>.\bin\Release\32-bit\</OutputPath>
             </PropertyGroup>
          </When>
          <When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
             <PropertyGroup>
                <OutputPath>.\bin\Release\64-bit\</OutputPath>
             </PropertyGroup>
          </When>
          <!-- For any other platform, use the platform name -->
          <Otherwise>
            <PropertyGroup>
                <OutputPath>.\bin\Release\$(Platform)\</OutputPath>
            </PropertyGroup>
          </Otherwise>
        </Choose>
      </When>
      <!-- For any other configuration, use debug properties-->
      <Otherwise>
        <PropertyGroup>
            <DebugSymbols>true</DebugSymbols>
            <DebugType>full</DebugType>
            <Optimize>false</Optimize>
            <DefineConstants>DEBUG;TRACE</DefineConstants>
        </PropertyGroup>
        <Choose>
          <When Condition="$(Platform)=='x86' Or $(Platform)=='ARM32'">
            <PropertyGroup>
              <OutputPath>.\bin\$(Configuration)\32-bit\</OutputPath>
            </PropertyGroup>
          </When>
          <When Condition="$(Platform)=='x64' Or $(Platform)=='ARM64'">
            <PropertyGroup>
              <OutputPath>.\bin\$(Configuration)\64-bit\</OutputPath>
            </PropertyGroup>
          </When>
        </Choose>
       </Otherwise>
  </Choose>

  <Target Name="ShowProperties">
    <Message Text="DebugSymbols: $(DebugSymbols)"/>
    <Message Text="Optimize: $(Optimize)"/>
    <Message Text="DefineConstants: $(DefineConstants)"/>
    <Message Text="OutputPath: $(OutputPath)"/>
  </Target>
</Project>

Ayrıca bkz.