【发布时间】:2021-08-02 06:29:11
【问题描述】:
我正在尝试使用存储在另一个属性中的字符串值 "Something" 来检索 MSBuild 属性 ($(Something))。我尝试使用 MSBuild 的 Escape/Unescape 方法,但它仍然只打印 $(Something) 而不是我想要的属性:
<Target Name="OutputBuildMacro">
<PropertyGroup>
<PropertyToGet>MSBuildProjectFile</PropertyToGet>
<MacroName>$([MSBuild]::Escape('$'))($(PropertyToGet))</MacroName>
</PropertyGroup>
<Message Text="$([MSBuild]::Unescape('$(MacroName)'))" />
</Target>
运行msbuild TestProject.vcxproj -t:OutputBuildMacro时的输出
Project "D:\TestProject\TestProject.vcxproj" on node 1 (OutputBuildMacro target(s)).
OutputBuildMacro:
$(MSBuildProjectFile)
Done Building Project "D:\TestProject\TestProject.vcxproj" (OutputBuildMacro target(s
)).
我还尝试用另一对 $( 和 ) 包装未转义的值,但这只会给我一个错误。是否可以使用字符串值而不是用 XML 编写的文字名称来检索 msbuild 属性?
【问题讨论】:
标签: c++ visual-studio msbuild visual-studio-2017