我对 MSBuild 非常陌生,无法弄清楚如何从条件部分构造 PropertyGroup 条目。
这是我所拥有的,但不起作用:
<ItemGroup>
<CompilerDirective Include="DEBUG_PARANOID" Condition=" '$(SomeFlag)' == 'true' "/>
<CompilerDirective Include="DEBUG"/>
<CompilerDirective Include="TRACE"/>
</ItemGroup>
<PropertyGroup>
...
<DefineConstants>@(CompilerDirective)</DefineConstants>
...
</PropertyGroup>
如果 SomeFlag 设置为 true,我希望定义的常量显示为 DEBUG_PARANOID;DEBUG;TRACE,如果不是,则省略 DEBUG_PARANOID。顺便说一句,这是针对 .csproj 的。
如果我用消息任务打印出@(CompilerDirective),它就可以工作。
我的问题是如何在 PropertyGroup 条目中实现此功能?
最佳答案
上面的内容有效。我运行了这个:
<Target Name="Test">
<ItemGroup>
<CompilerDirective Include="DEBUG_PARANOID"
Condition=" '$(SomeFlag)' == 'true' "/>
<CompilerDirective Include="DEBUG"/>
<CompilerDirective Include="TRACE"/>
</ItemGroup>
<PropertyGroup>
<DefineConstants>@(CompilerDirective)</DefineConstants>
</PropertyGroup>
<Message Text="$(DefineConstants)" />
</Target>
并得到正确的输出 调试;跟踪 或者 调试_偏执;调试;跟踪 取决于属性(property)的值(value)。这在什么情况下对您不起作用?
关于msbuild - 如何从 MSBuild 中的 ItemGroup 构建 PropertyGroup 条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345865/