9

使用するのに適したタイプかどうかはわかりませんItemGroup。選択に応じて true または false になる 4 つの異なるブール値を取得します。

ItemGrouptrue または false に応じて、この「文字列」で埋めたいと思います。それは可能ですか、それとも何を使用する必要がありますか?

Anders = true
Peter = false
Michael = false
Gustaf = true

ItemGroupはアンデルスとグスタフが必要です。

それは可能ですか、それともどうすれば解決できますか?

4

1 に答える 1

13

アイテムがたくさんあるのでItemGroup、最初から に格納することをお勧めします。これが目的であり、変換なども可能にするためです。たとえば、これで目的が達成されます。

<ItemGroup>
  <Names Include="Anders">
    <Value>True</Value>
  </Names>
  <Names Include="Peter">
    <Value>False</Value>
  </Names>
  <Names Include="Michael">
    <Value>False</Value>
  </Names>
  <Names Include="Gustaf">
    <Value>True</Value>
  </Names>
</ItemGroup>

<Target Name="GetNames">

  <ItemGroup>
    <AllNames Include="%(Names.Identity)" Condition="%(Names.Value)==true"/>
  </ItemGroup>

  <Message Text="@(AllNames)"/>  <!--AllNames contains Anders and Gustaf-->
</Target>

ただし、それらがプロパティでなければならない場合は、次のようにすべて手動で列挙する以外に方法はないと思います。

<PropertyGroup>
  <Anders>True</Anders>
  <Peter>False</Peter>
  <Michael>False</Michael>
  <Gustaf>True</Gustaf>
</PropertyGroup>

<Target Name="GetNames">

  <ItemGroup>
    <AllNames Include="Anders" Condition="$(Anders)==true"/>
    <AllNames Include="Peter" Condition="$(Peter)==true"/>
    <AllNames Include="Michael" Condition="$(Michael)==true"/>
    <AllNames Include="Gustaf" Condition="$(Gustaf)==true"/>
  </ItemGroup>

  <Message Text="@(AllNames)"/>
</Target>
于 2012-10-22T13:08:29.367 に答える