use*_*911 7 msbuild msbuild-task msbuildcommunitytasks msbuild-4.0 msbuildextensionpack
我不知道是否 ItemGroup使用正确的类型.根据选择,我会得到4种不同的布尔值,无论是真还是假.
我想填补一个 ItemGroup根据真假这个"字符串".这可能或我应该使用什么?
例
Anders = true
Peter = false
Michael = false
Gustaf = true
Run Code Online (Sandbox Code Playgroud)
我的 ItemGroup然后应该有安德斯和古斯塔夫.
这是可能的,或者我该如何解决?
sti*_*ijn 11
由于你有很多项目,最好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>
Run Code Online (Sandbox Code Playgroud)
但是,如果它们必须是属性,我认为没有其他方法可以手动枚举它们,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8567 次 |
| 最近记录: |