读取msbuild语法
本文关键字:语法 msbuild 读取 | 更新日期: 2023-09-27 17:54:41
我遇到了我不理解的msbuild语法。下面的代码片段来自另一个关于创建自定义msbuild任务
的问题<GenerateDesignerDC
InputFiles="@(dbml)"
OutputFiles="@(dbml->'$(IntermediateOutputPath)%(FileName).designer.cs')">
...
@(dbml->'$(IntermediateOutputPath)%(FileName).designer.cs')
是什么意思?@
符号通常引用ItemGroup
中的文件;@(...)
里面的->
箭头是什么意思?
这是什么小语言(与@
s, $
s, %
s, ->
等)用于替换到构建任务的属性调用?
我不确定这些小语言是否有一个特殊的名称。据我所知,这些方法被定义为提取或显示项的值或项可能包含的元数据。
例如:@
符号用于获取任何ItemType的值。对于项目列表转换,使用@(SourceFiles -> '%(Filename).obj')
。
查看此链接了解更多信息https://msdn.microsoft.com/en-us/library/dd393573.aspx
请参见检查项类型值。
这种特定的语法称为转换。
转换是一个项目列表到另一个项目列表的一对一转换。除了使项目能够转换项列表之外,转换还使目标能够识别其输入和输出之间的直接映射。
语法没有明确记录。->
之前的部分是一个项目列表,类似于@
通常引用的项目列表。在示例@(dbml->...)
中,它正在转换dbml
项列表。->
后面的部分是新文件名的表达式。它可以引用任何带有%
符号的项目元数据。在这个例子中,它构造了一个带有$(IntermediateOutputPath)
属性和%(Filename)
众所周知的项目元数据的字符串。
众所周知的项目元数据应该可用于任何项目,并包括最明显的项目路径
MetaData Example
%(FullPath) C:'MyProject'Source'Program.cs
%(RootDir) C:'
%(Directory) MyProject'Source'
%(Filename) Program
%(Extension) .cs