带条件的MSBuild项组

带条件的MSBuild项组,msbuild,msbuild-task,msbuild-4.0,msbuildcommunitytasks,msbuildextensionpack,Msbuild,Msbuild Task,Msbuild 4.0,Msbuildcommunitytasks,Msbuildextensionpack,我不知道ItemGroup是否是正确的类型。我将得到4个不同的布尔值,它们是真是假取决于选择 我想根据真或假用这个“字符串”填充项目组。这可能吗?我应该用什么 范例 Anders = true Peter = false Michael = false Gustaf = true 我的ItemGroup应该有 安德斯和古斯塔夫 这是可能的,或者我应该如何解决呢?因为您有一堆项目,最好从一开始就将它们存储在项目组中,因为毕竟这就是它的目的,它还允许转换等。例如,这实现了您想要的: <Ite

我不知道
ItemGroup
是否是正确的类型。我将得到4个不同的布尔值,它们是真是假取决于选择

我想根据真或假用这个“字符串”填充
项目组。这可能吗?我应该用什么

范例

Anders = true
Peter = false
Michael = false
Gustaf = true
我的
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>

真的
假的
假的
真的
这些“字符串”是什么?它们在文本文件中吗?它们是msbuild属性吗?另外,请检查你的拼写。它是
ItemGroup
而不是
iteamgroup