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>

MSBuild属性的更多相关文章

  1. MSBuild是什么?

    MSBuild入门 MSBuild是什么? MSBuild全称(Microsoft Build Engine),是用来生成.NET程序的平台.您可能不知道它,但是如果您在使用VS做开发,那么一定时时刻 ...

  2. MSBuild入门(续)

    MSBuild基本概念(续) 在上一篇简单的介绍了下MSBuild中的四个基本块,每块介绍比较单薄,在这里对在大多数的项目模版生成的*.*proj文件中比较常见一些用法和概念做些补充.主要有一下几方面 ...

  3. .NET Core 在Visual Studio 2015 下的使用-MSDN

    .NET Core RC2 现已推出,这是真正的"候选发布"而非 RC1 Beta 冒充的候选发布(如果是那样,请考虑发布后出现的所有更改).当前,围绕 .NET Core 的开发 ...

  4. net中的编译

    1.MSBuild 四个基本块(属性.项.任务.目标): MSBuild属性:   属性是一些键/值对,主要用来存储一些配置信息. MSBuild  项:   主要是存储一些项目文件信息,以及文件的元 ...

  5. 【译】.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容

      .NET Core 3.0 Preview 3已经推出,它包含了一系列关于ASP.NET Core的新的更新. 下面是该预览版的更新列表: Razor组件改进: 单项目模板 新的Razer扩展 E ...

  6. Jenkins持续集成学习-搭建jenkins问题汇总

    目录 Jenkins持续集成学习5-搭建jenkins问题汇总 目录 前言 问题列表 nuget还原包问题 编译问题 SVN更新问题 参考文档 Jenkins持续集成学习5-搭建jenkins问题汇总 ...

  7. .NET Core 2.1中的分层编译(预览)

    如果您是.NET性能的粉丝,最近有很多好消息,例如.NET Core 2.1中的性能改进和宣布.NET Core 2.1,但我们还有更多的好消息.分层编译是一项重要的新特性功能,我们可以作为预览供任何 ...

  8. Python3 与 C# 扩展之~模块专栏

      代码裤子:https://github.com/lotapp/BaseCode/tree/maste 在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode ...

  9. visual studio单项目一次生成多框架类库、多框架项目合并

    目录 不同平台框架项目使用同一套代码,一次编译生成多个框架类库 需要先了解的东西 分析 添加PropertyGroup 多目标平台 编译符号和输出目录设置 添加依赖 代码文件处理 主副平台项目文件处理 ...

  10. 8.在XamarinAndroid上进一步控制包的大小

    在Android上链接 Xamarin.Android应用程序使用链接器来减小应用程序的大小.链接器使用应用程序的静态分析来确定哪些程序集.类型.成员被实际使用.链接器的行为就像一个GC,不断寻找被引 ...

随机推荐

  1. Linux 网络设置及管理

    Linux 网络管理 网络管理 1.使用NetworkManager管理网络 NetworkManager(网络管理器)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备连接和开启并激活 ...

  2. 【Python】HTML中Base64存储的图片转为本地图片文件

    我用jupyter notebook写了笔记之后,想导出markdown,然后导出不了,我就只能导出html,结果导出的html存储图片用的base64的方式-- 于是我就要把导出的html文档里面的 ...

  3. gitlab16 gitlab-runner

    gitlab-runner verify --delete FederatedKMeansSecureModelInference gitlab-runner register  --url http ...

  4. 如何在Linux上使用pbcopy和pbpaste命令

    由于 Linux 和 Mac OS X 是基于 *Nix 的系统,因此许多命令可以在两个平台上运行.但是,某些命令可能在两个平台上都没有,比如 pbcopy 和 pbpast.这些命令仅在 Mac O ...

  5. docker.sock: connect: permission denied 解决

    问题描述xjun@DESKTOP-L2R4GKN:~$ docker run -it hello-worlddocker: Got permission denied while trying to ...

  6. 国外著名交易策略:R-Breaker模型设计原理(转载)

    R-Breaker是一种短线日内交易策略,它结合了趋势和反转两种交易方式. 交易系统的基本原理如下: 1.根据前一个交易日的收盘价.最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买 ...

  7. Windows 10 下编译 64 位 OpenJDK 8 并单步调试

    Windows 10 下编译 64 位 OpenJDK 8 软件版本 操作系统:Windows 10 Cygwin:3.5.4-1 Visual Studio:2010 英文版 freetype: 2 ...

  8. Qt编写物联网管理平台38-多种数据库支持

    一.前言 本系统设计之初就要求支持多种不同的数据库,比如sqlite.mysql.postgres.sqlserver等,甚至包括国产数据库比如人大金仓kingbase等,(由于现在国产化的大力推进, ...

  9. Qt数据库应用20-csv文件转xls

    一.前言 最近又多了个需求就是将csv格式的文件转xls,需求一个接着一个,还好都是真实的需求,而且都是有用的需求,并不是不靠谱的需求,不靠谱的需求就比如程序自动识别手机壳颜色自动换背景颜色或者边框颜 ...

  10. 关于QCustomPlot超级图表的一些冷知识点

    开源的图表控件QCustomPlot很经典,作者至少是八星斗圣级别,在曲线数据展示这块性能彪悍,总结了一些容易忽略的经验要点. 可以将XY轴对调,然后形成横向的效果,无论是曲线图还是柱状图,分组图.堆 ...