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. PHP 简易的BASE64加密

    有这样一个有趣的公式:x<100;  (x*53*17)%100 = x;这个公司的原理:53*17=901,x*901,的数后2位数还是x:任何符合 a * b = 100 * n +1 的值 ...

  2. remove a git submodule

    参考: http://stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule 1. Delete the relevant se ...

  3. 龙哥量化:期货软件中红红绿绿的"多开,空开,空平,多平,多换,空换,双开,双平,换手"是什么意思?(转载的)

    期货投资者在看盘时,会看到红红绿绿的"多开,空开,空平,多平,多换,空换,双开,双平,换手",以快期专业版为例,如下图1所示: 图1.红绿开平数据(快期专业版) 这些数据里面的红色 ...

  4. Qt音视频开发01-共享解码线程(耗时一年/性能凶残/至臻完美)

    一.前言 大概在8年前就开始用ffmpeg做视频解码的显示,第一个版本就100行代码左右,功能极其简单,就是开个线程解码视频流转成图片发给主界面绘制.时间过得真快,从当初的一胎到现在二胎都上学了三胎计 ...

  5. Qt编写的项目作品12-简易视频播放器

    一.功能特点 多线程实时播放rtsp视频流. 支持windows+linux+mac. 多线程显示图像,不卡主界面. 自动重连网络摄像头. 可设置边框大小即偏移量和边框颜色. 可设置是否绘制OSD标签 ...

  6. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.7版已发布

    关于RainbowChat RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统.RainbowChat源于真实运营的产品,解决了大量的屏幕适配.细节优化. ...

  7. CDS标准视图:功能位置描述 I_FunctionalLocationText

    视图名称:功能位置描述 I_FunctionalLocationText 视图类型:基本视图 视图代码: 点击查看代码 @EndUserText.label: 'Functional Location ...

  8. [megatron代码阅读] 1. 初始化和组网

    以pretrain_gpt.py为例, 看megatron的整体逻辑. 本章主要包括megatron初始化相关逻辑, 核心函数为initialize_megatron, setup_model_and ...

  9. javascript对象学习笔记

    目前所见的,在普通的JavaScript应用中和绝大多数人一样使用的是全局的方式.大概是因为JavaScript所定义的变量或函数默认就是全局的.为了是代码不至于太凌乱,变量不至于稀里糊涂的就被人重定 ...

  10. flow pg walkthrough Intermediate

    nmap nmap -p- -A -T4 -sS 192.168.114.104 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-07 03 ...