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>
MSBuild属性的更多相关文章
- MSBuild是什么?
MSBuild入门 MSBuild是什么? MSBuild全称(Microsoft Build Engine),是用来生成.NET程序的平台.您可能不知道它,但是如果您在使用VS做开发,那么一定时时刻 ...
- MSBuild入门(续)
MSBuild基本概念(续) 在上一篇简单的介绍了下MSBuild中的四个基本块,每块介绍比较单薄,在这里对在大多数的项目模版生成的*.*proj文件中比较常见一些用法和概念做些补充.主要有一下几方面 ...
- .NET Core 在Visual Studio 2015 下的使用-MSDN
.NET Core RC2 现已推出,这是真正的"候选发布"而非 RC1 Beta 冒充的候选发布(如果是那样,请考虑发布后出现的所有更改).当前,围绕 .NET Core 的开发 ...
- net中的编译
1.MSBuild 四个基本块(属性.项.任务.目标): MSBuild属性: 属性是一些键/值对,主要用来存储一些配置信息. MSBuild 项: 主要是存储一些项目文件信息,以及文件的元 ...
- 【译】.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容
.NET Core 3.0 Preview 3已经推出,它包含了一系列关于ASP.NET Core的新的更新. 下面是该预览版的更新列表: Razor组件改进: 单项目模板 新的Razer扩展 E ...
- Jenkins持续集成学习-搭建jenkins问题汇总
目录 Jenkins持续集成学习5-搭建jenkins问题汇总 目录 前言 问题列表 nuget还原包问题 编译问题 SVN更新问题 参考文档 Jenkins持续集成学习5-搭建jenkins问题汇总 ...
- .NET Core 2.1中的分层编译(预览)
如果您是.NET性能的粉丝,最近有很多好消息,例如.NET Core 2.1中的性能改进和宣布.NET Core 2.1,但我们还有更多的好消息.分层编译是一项重要的新特性功能,我们可以作为预览供任何 ...
- Python3 与 C# 扩展之~模块专栏
代码裤子:https://github.com/lotapp/BaseCode/tree/maste 在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode ...
- visual studio单项目一次生成多框架类库、多框架项目合并
目录 不同平台框架项目使用同一套代码,一次编译生成多个框架类库 需要先了解的东西 分析 添加PropertyGroup 多目标平台 编译符号和输出目录设置 添加依赖 代码文件处理 主副平台项目文件处理 ...
- 8.在XamarinAndroid上进一步控制包的大小
在Android上链接 Xamarin.Android应用程序使用链接器来减小应用程序的大小.链接器使用应用程序的静态分析来确定哪些程序集.类型.成员被实际使用.链接器的行为就像一个GC,不断寻找被引 ...
随机推荐
- 我的世界服务器搭建教程 兼容Paper核心 兼容Spigot核心
注意:该服务器是基于Paper1.20.1核心进行初始化,默认兼容spigot插件. 一.配置JDK环境 二. 服务器核心配置 三.服务器启动 四.加入游戏 现在搭建出来的是原版生存服务器,接下来需要 ...
- kubernetes更改nodePort模式下的默认端口范围
使用nodePort模式,官方默认范围为30000-32767,详见Service官方文档. NodePort 类型如果将 type 字段设置为 NodePort,则 Kubernetes 控制平面将 ...
- Solution Set -「NOIP Simu.」20221011
「Unknown」找 给出平面上 \(n\) 个点, 对于每个点, 求出它到其他点的欧式距离平方和. \(n\le2\times10^5\). Tag:「水题无 tag」 画风正常的签 ...
- 20250110-FortuneWheel 攻击事件:竟然不设滑点,那就体验一下 Force Investment 吧
背景信息 攻击交易:https://app.blocksec.com/explorer/tx/bsc/0xd6ba15ecf3df9aaae37450df8f79233267af41535793ee1 ...
- 学Shiro完结版-5
第二十一章 授予身份及切换身份--<跟我学Shiro> 在一些场景中,比如某个领导因为一些原因不能进行登录网站进行一些操作,他想把他网站上的工作委托给他的秘书,但是他不想把帐号/密码告诉他 ...
- https证书一键自动续期,帮你解放90天限制
前言 前几天网站证书到期,发觉证书颁发每次只能90天有效期,这谁能忍受,于是乎发觉网上有免费的一键续期脚本,真正解放我们的双手.项目如下acme.sh. 期间由于"墙"的原因,踩了 ...
- 聊一聊 操作系统蓝屏 c0000102 的故障分析
一:背景 1. 讲故事 今年以来不知道为啥总有些朋友加我微信,让我帮忙分析下操作系统蓝屏问题,我也觉得挺好奇的,就问了其中一位朋友,说是B站来的,我就在拼命回忆,为啥会找我分析蓝屏?突然想到了去年好像 ...
- 盘点!HelloGitHub 年度热门开源项目
春节将至,HelloGitHub 也迎来了年终盘点时刻.这是一份送给开源爱好者的"年终盛宴",期待你在这里发现更多值得关注的开源佳作. 为了满足不同读者的需求,我精心准备了这期超长 ...
- [ARC 058 - E]Iroha and Haiku
传送门 解题步骤 首先可以发现题目范围非常小,尤其是\(X,Y,Z\),所以考虑类似状压.数位dp.双向搜索等算法. 官方题解中给的是数位dp,那我这里就讲讲状压了 对于\(N \leq 40\),很 ...
- ORACLE存储过程中使用SELECT INOT语句避免NO_DATA_FOUND的方法
oracle存储过程中使用了类似如下语句,当查询不到记录时,会触发"数据未发现"异常 SELECT col INTO v_col FROM t_table 来自网络的方法 1)使用 ...