c++ - 是否可以通过字符串名称获取 MSBuild 属性?
问题描述
我正在尝试使用存储在另一个属性中$(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
)).
我还尝试用另一对$(
and包装未转义的值)
,但这只会给我一个错误。是否可以使用字符串值而不是用 XML 编写的文字名称来检索 msbuild 属性?
解决方案
你可以试一试:
<Target Name="OutputBuildMacro">
<PropertyGroup>
<PropertyToGet>MSBuildProjectFile</PropertyToGet>
<MacroName>$(PropertyToGet)</MacroName>
</PropertyGroup>
<Message Text="$(MacroName)" />
</Target>
>是否可以使用字符串值而不是用 XML 编写的文字名称来检索 msbuild 属性?
据我所知,这是不可能的。文字名称是唯一的,但字符串值不是。
推荐阅读
- sql - 将递归查询从 Oracle Sql 移至 Redshift
- python - Python 3.5 线程:这是否正确实现?
- javascript - onWheel 事件 - 如何在用户停止滚动后立即触发方法
- php - 将自定义产品计算价格添加到 Woocommerce 购物车
- mysql - MYSQL - 根据行号查找记录
- java - Intent.createChooser 选择默认应用程序
- wso2 - WSO2:API 无法在独立网关中进行身份验证
- apache-spark - 在 pyspark 中使用 graphX
- recursion - DM 中的 Neo4j 递归
- angularjs - Angularjs $http 请求在未完成工作的情况下通过