MSBuild
Ariston
Posted on February 23, 2024
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元素存储在属性或者项中,
💖 💪 🙅 🚩
Ariston
Posted on February 23, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
githubcopilot AI Innovations at Microsoft Ignite 2024 What You Need to Know (Part 2)
November 29, 2024