MSBuild项目是构建系统的输入,通常代表文件(文件在Include
属性中指定)。根据项目的元素名称将项目分组为项目类型。项目类型是可以用作任务参数的项目的命名列表。任务使用项目值执行构建过程的步骤。
在porject file中创建item
将项目文件中的项目声明为ItemGroup元素的子元素。子元素的名称是项目类型。Include
元素的属性指定要包含在该项目类型中的项目(文件)。例如,以下XML创建名为的项目类型Compile
,其中包括两个文件。
<ItemGroup>
<Compile Include = "file1.cs"/>
<Compile Include = "file2.cs"/>
</ItemGroup>
项目file2.cs不会替代项目file1.cs;而是将文件名附加到Compile
项目类型的值列表中。
以下XML通过在一个Include
属性中声明两个文件来创建相同的项目类型。请注意,文件名用分号分隔。
<ItemGroup>
<Compile Include = "file1.cs;file2.cs"/>
</ItemGroup>
Include
属性是相对于项目文件的文件夹$(MSBuildProjectPath)进行解释的路径,即使该项目位于导入的文件
在执行期间创建项目
在构建的评估阶段,将为目标元素以外的项目分配值。在后续执行阶段中,可以通过以下方式创建或修改项目:
-
该CreateItem任务可以发出一个项目。不建议使用此用法。
-
从.NET Framework 3.5开始,
Target
元素可能包含可能包含项目元素的ItemGroup元素。
项目文件中的参考项目
要在整个项目文件中引用项目类型,请使用语法@(<ItemType>)。例如,您可以使用来引用上一个示例中的项目类型@(Compile)
。通过使用此语法,可以通过将项目类型指定为该任务的参数来将项目传递给任务。
1,声明某个项目
<CSFile Include="form1.cs"/>
<VBFile Include="form1.vb"/>
2,声明多个项目
<CSFile Include="form1.cs;form2.cs"/>
<VBFile Include="form1.vb;form2.vb"/>
3.通过通配符指定输入:
将所有.jpg文件包含在Images目录和子目录中:Include="Images\**\*.jpg"
包括所有以img开头的.jpg文件 :Include="Images\**\img*.jpg"
将名称以jpgs结尾的所有文件包括在目录中:Include="Images\**\*jpgs\*.*" or Include="Images\**\*jpgs\*"
4,将项目传递给任务
将所有Visual C#或Visual Basic文件用作输入
使用Include
类似于以下内容的属性:
<CSC Sources="@(CSFile)">...</CSC>
要么
<VBC Sources="@(VBFile)">...</VBC>
<Project DefaultTargets="Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<Builtdir>built</Builtdir>
</PropertyGroup>
<ItemGroup>
<CSFile Include="Form1.cs"/>
<CSFile Include="AssemblyInfo.cs"/>
<Reference Include="System.dll"/>
<Reference Include="System.Data.dll"/>
<Reference Include="System.Drawing.dll"/>
<Reference Include="System.Windows.Forms.dll"/>
<Reference Include="System.XML.dll"