MSBuild属性

MSBuild 属性

MSBuild属性是键值对的集合,提前声明好这些属性之后,整个项目的生成都可以引用这些属性。
属性名不区分大小写。
属性都是写在 PropertyGroup 标签中。

1、声明属性:声明一个属性 BuildDir,属性值为:BuildBin

<PropertyGroup> <BuildDir>BuildBin</BuildDir> </PropertyGroup>

2、使用属性:属性声明后,在整个项目文件中都可以引用这个属性。

具体引用方法 $(PropertyName),如下代码,在AllPath属性中 引用了BuildDir这个属性的属性值

<PropertyGroup> <BuildDir>BuildBin</BuildDir> <AllPath>$(BuildDir)</AllPath> </PropertyGroup>

3、系统属性:官方为我们定义好了一些预定义的属性,我们可以直接使用

预留属性属性的链接为: https://learn.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-reserved-and-well-known-properties?view=vs-2022 比如:MSBuildVersion属性表述当前MSBuild.exe工具的版本号,我们可以在属性定义中引用这个预定义属性。代码中我们声明了一个属性SysProperty,属性值为:msbuild.exe version is 加上当前mshuild.exe的版本号。

<PropertyGroup> <SysProperty>msbuild.exe version is $(MSBuildVersion)</SysProperty> </PropertyGroup>

4、环境变量:在项目文件中引用环境变量。

如果想引用电脑中的环境变量,可以通过 $(PropertyName) 方法来引用环境变量,引用方法其实和引用预定义属性的格式是一样的。比如:环境变量中医保都有Path变量,我们在项目文件中就可以引用它。

<PropertyGroup> <MyPath>$(Path)</MyPath> </PropertyGroup>

5、注册表:在项目文件中引用注册表属性

注意:(在 .NET SDK 版本的 MSBuild (dotnet build) 中,不支持注册表属性。)

6、全局属性

在使用msbuild.exe编译的时候,可以通过命令行参数的方式(-property或-p)设置属性,这里设置的属性可以全局使用,可以覆盖已有的属性值(如果项目文件中已经声明过这个属性的话)。如下:设置了Configuration的属性值为DEBUG。那么在项目文件中,都可以通过 $(Configuration) 引用这个属性值
msbuild.exe MyProj.proj -p:Configuration=DEBUG

6、属性函数

在项目文件中,可以执行c#的一些函数来获取动态属性值,如:Today这个属性,利用DateTime的静态函数计算值。
<Today>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</Today>

7、属性值不仅仅可以存储字符串,也可以存储任意的xml结构数据。

点击查看代码
	<PropertyGroup>
		<Person>
			<Info>
				<Name>caoruipeng</Name>
				<Age>11</Age>
			</Info>
		</Person>
	</PropertyGroup>

8、条件判断(属性组)

在PropertyGroup属性组标签上,添加Condition条件表达式,如果表达式为true,那么属性组里面的属性都会生效。否则就不生效。
<PropertyGroup Condition="'$(TestName)'=='ZhangSan'"> <Score>60.3</Score> </PropertyGroup>

9、条件判断(属性)

在属性标签上新增添加Condition条件表达式,如果表达式为true,那么属性组里面的属性都会生效。否则就不生效。
<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>

posted @ 2023-01-10 09:39  caoruipeng  阅读(103)  评论(0编辑  收藏  举报