MSBuild是什么?
Microsoft Build Engine,用于构建应用程序的平台,.proj文件就是MSBuild提供的,这个XML格式的文件,含有项目所包含的文件,生成配置,输出配置等。当把文件或者图片添加到项目中,就会在这里添加一个描述,反之则删除一个描述,在项目属性页作的配置也会在这里存储?(这句话没明白是什么意思)
MSBuild的基本概念
MSBuild有四个基本块(属性、项、任务、目标)
MSBuild属性:属性是一些键值对、一定要包含在PropertyGroup元素内部
MSBuild项:存储一些项目文件信息、以及文件元数据信息
MSBuild任务:Build过程中的一些原子操作(如CSC、MakeDir)。
MSBuild目标:
一句话总结MSBuild,利用配置信息对项目文件实施特定顺序的操作。
MSBuild属性
属性声明方式:
1 <?xml version="1.0" encoding="utf-8"?>
2 <!--根元素,表示一个项目-->
3 <!--DefaultTargets用于定默认执行的目标-->
4 <Project DefaultTargets="build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 <!--属性都要包含在PropertyGroup元素内部-->
6 <PropertyGroup>
7 <!--声明一个"linianhui"属性,其值为"hello world"-->
8 <linianhui>hello world</linianhui>
9 </PropertyGroup>
10 <!--目标-->
11 <Target Name="build">
12 <!--MSBuild提供的一个内置任务,用于生成记录信息用$(属性名)来引用属性的值-->
13 <Message Text="$(linianhui)"></Message>
14 </Target>
15 </Project>
这里面的DefaultTargets和xmlns都是固定的,我们就照抄就好
可以看出来,属性都是键值对,并且只在PropertyGroup内部,属性可以被引用。
MSBuild项
项声明方式:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--项都要包含在ItemGroup元素内部-->
<ItemGroup>
<!--声明一个"CSFile"的项,Include表示引入"csfile1.cs"文件-->
<CSFile Include="csfile1.cs">
<!--Version表示项的元数据(附加信息)-->
<Version>1.0.0.0</Version>
</CSFile>
<!--也可用";"一次引入多个文件-->
<CSFile Include="csfile2.cs;csfile3.cs"/>
</ItemGroup>
<Target Name="build">
<!--@引用项的值,默认以";"分割开-->
<!--输出"csfile1.cs;csfile2.cs;csfile3.cs"-->
<Message Text="@(CSFile)"></Message>
<!--可以加第二个参数替换默认的";"分隔符-->
<!--输出"csfile1.cs+csfile2.cs+csfile3.cs"-->
<Message Text="@(CSFile,'+')"></Message>
<!--%引用项的元数据,输出"1.0.0.0"-->
<Message Text="%(CSFile.Version)"></Message>
</Target>
</Project>
我们可以看到所有的项都要包含在ItemGroup内部,其余细节见代码注释
MSBuild 任务
上面的Messgae就是一个任务,用于打印信息,大多任务都是有输出信息的,这些信息可以通过OutPut元素存储在属性或者项中,
Top comments (0)