如何在MSBuild文件中获取嵌套TaskItem元数据值?
MSBuild含冒号的TaskItem元数据获取问题解决方法
问题描述
我有一个MSBuild TaskItem,其中包含从JSON配置中收集的元数据。单个元数据示例如下:
%(Configuration.Object:Name)
数组形式的元数据示例如下:
%(Configuration.Object:Name:0) %(Configuration.Object:Name:1) ...
但尝试获取该键值时,MSBuild仅返回原字符串而非解析后的对应值,似乎无法识别MSBuild文件中的冒号。我已通过将完整TaskItem @(Configuration)传入自定义任务,确认该元数据值存在,也尝试过使用transform语法但无效。请问在MSBuild文件中获取这些值的正确语法是什么?
解决方法
MSBuild里冒号是元数据的默认分隔符,当元数据名称本身包含冒号时,必须用单引号把整个元数据名称包裹起来,防止MSBuild把冒号当成分隔符解析。
单个元数据的正确写法
%(Configuration.'Object:Name')
数组形式元数据的正确写法
%(Configuration.'Object:Name:0') %(Configuration.'Object:Name:1')
验证方法
可以在项目中添加Message任务测试解析效果:
<Message Text="单个元数据值:%(Configuration.'Object:Name')" /> <Message Text="数组第一个元素:%(Configuration.'Object:Name:0')" />
执行构建后就能看到正确解析后的元数据值,而非原字符串。
内容的提问来源于stack exchange,提问作者Ken Garrett
相关产品推荐
相关产品推荐

