读取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, ->等)用于替换到构建任务的属性调用?

读取msbuild语法

我不确定这些小语言是否有一个特殊的名称。据我所知,这些方法被定义为提取或显示项的值或项可能包含的元数据。

例如:@符号用于获取任何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