MSBuild 命令的简单使用

MSBuild 命令的简单使用

独立观察员 2022 年 7 月 7 日

d1c79d8b717444500f5b184f2979c25e.png

位置

在 VS 安装目录下,如:D:Microsoft Visual Studio2022EnterpriseMSBuildCurrentBin

7f60cddaf818705008bf83daefb2209a.png

命令

MSBuild 命令行参考 - MSBuild | Microsoft Docs(https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2022)

使用 MSBuild.exe 生成项目或解决方案文件时,可以包含几个开关来指定过程的各个方面。

每个开关都有两种形式:-switch 和 /switch。本文档仅介绍 -switch 形式。开关不区分大小写。如果从 Windows 命令提示符之外的 shell 运行 MSBuild,则开关的参数列表(用分号或逗号分隔)可能需要单引号或双引号,以确保将列表传递到 MSBuild,而不是由 shell 解释。

语法

MSBuild.exe [Switches] [ProjectFile]

参数

参数描述
ProjectFile在指定项目文件中生成目标。如果不指定项目文件,则 MSBuild 会在当前工作目录中搜索以 “proj” 结尾的文件扩展名并使用该文件。还可以为此参数指定 Visual Studio 解决方案文件。

开关

略(见原文)

示例

MSBuild.exe MyProject.proj -t:rebuild

问题

1、VS 中的生成前事件中参数未被识别的问题

项目中有如下生成事件,其中使用了 $(SolutionDir) 参数:

d3373d5d34f1cf66b3ff779faee94fe9.png

在使用 Jenkins 的 MSBuild 插件进行编译项目时发现该命令不能被识别:

8c8ca260a7b03f0151e1cab039594981.png

参考《[使用 MSBuild Tools 调用 csproj 项目文件发布网站时 $(SolutionDir) 宏参数值丢失为空的解决方案](https://www.cnblogs.com/VAllen/p/how-to-get-rid-of-solutiondir-when-building-vs-project-from-outside-visual.html)》可知,可以使用 -p 开关来指定参数的值,如下:

MSBuild D:JenkinsDataworkspaceSrcdesktop.sln -p:SolutionDir=D:JenkinsDataworkspaceSrc

-p 和 /p 应该是等价的。官网介绍如下:

ac44f4e3ef7bb128e12dfff9ecea7854.png

2、阻止输出警告信息

使用如下命令:

msbuild /p:WarningLevel=0

关于警告等级:

0 关闭所有的警告。

1 仅显示严重警告。

2 显示 1 级的警告以及某些不太严重的警告,例如有关隐藏类成员的警告。

3 显示级别 2 警告以及某些不太严重的警告,例如关于始终评估为 true 或 false 的表达式的警告。

4 默认值 显示所有 3 级警告和普通信息警告。

参考:《[在 MSBuild 编译项目时阻止输出所有的警告信息](https://blog.csdn.net/WPwalter/article/details/88796146/)

示例

使用 MSBuild 命令编译项目(: 注释的代码部分为 devenv 方式编译),各部分解释看脚本中的中文注释:

rem v20220705
ECHO OFF: 以管理员身份运行
echo SetAdmin...
@echo off
>nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%getadmin.vbs"
"%temp%getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%getadmin.vbs" ( del "%temp%getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
echo SetAdmin Done.: 杀死进程
taskkill /F /IM Main.Gui.exe: 设置相关变量
set bg_dir=E:Buildexe
set src_dir=%~pd0Src
:Jenkins 工作空间路径为 % WORKSPACE%
:set src_dir=%WORKSPACE%Src
set desktop_dir=%src_dir%desktop: 设置编译的环境变量
:set PATH="D:Microsoft Visual Studio2022EnterpriseCommon7IDE";%PATH%
set PATH="D:Microsoft Visual Studio2022EnterpriseMSBuildCurrentBin";%PATH%: 执行编译
ECHO ***************************************** Build desktop *****************************************
:devenv %desktop_dir%desktop.sln /rebuild DEBUG
:devenv %desktop_dir%desktop.sln /build DEBUG /project %desktop_dir%UIMain.Gui.csproj
MSBuild %desktop_dir%UIMain.Gui.csproj -p:WarningLevel=0;SolutionDir=%desktop_dir%
ECHO ================================================desktop Done===========================================================
ECHO .
ECHO .: 拷贝文件
ECHO Copy desktop
xcopy /Y /E /Q /I /exclude:%src_dir%exclude.txt %desktop_dir%Build %bg_dir%desktop: 调用 Advanced Installer 打包
D:
cd D:Advanced Installer16.7binx86
advinst.exe /rebuild "E:BuildddPCR.aip"pause

其中存放忽略规则的文件 exclude.txt 的内容为:

logs
.gitignore
.xml
.pdb
data

感谢阅读!

C#

C#10 新特性 [调用方参数表达式] 解决了我七年前的困惑

【分享】C# 字节帮助类 ByteHelper

C# 在自定义的控制台输出重定向类中整合调用方信息

C# 枚举转列表

.NET

Windows 服务 同时启动多个服务

PostSharp 中 AOP 功能的简单使用

.NET SDK-Style 项目(Core、Standard、.NET5)中的版本号

将 .NET Framework 项目转换为 .NET Standard 项目

ASP.NET Core MVC 网站学习笔记

Unity 容器简单使用方法

Unity容器依赖注入之属性注入使用备忘

添加服务引用来使用WebService

其它

在 Windows 上搭建配置 Jenkins 然后编译打包 VS 项目

在香蕉派的树莓派系统上配置 Syncthing 自启动(暨 Linux 软件自启服务配置)

使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放

如何快速剥火腿肠皮?

使用 Floccus 插件和坚果云同步 Chrome 类浏览器书签

Docker Hub 使用初探

『独立观察员』个人观影 Ⅱ

VisualStudio 使用 DialogPage 存储配置信息

分页SQL语句

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS实验教程——实验四十:ArcGIS洪水淹没分析案例教程

文章目录 一、洪水淹没效果动画演示二、实验数据三、实验过程1. 加载数据2. 符号化3. 夸大处理4. 动画制作5. 动画播放6. 导出动画基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动…

数据库显示日期时仅仅显示“年-月-日”的问题

日期时间实际上存放的是年-月-日 时:分:秒,但是仅仅显示了年-月-日,未显示时分秒信息。解决方法:工具-首选项-数据库》NLS日期格式:YYYY-MM-DD HH24:MI:SS,保存后重新查询。转载于:https://blog…

C语言试题185之编写calloc函数,函数内部使用malloc函数来获取内存

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 编写ca…

iOS11、iPhone X 适配简单,但你的Apple思维适配做好了么?

2017.10.23 iPhone X 的刘海为什么这么丑? 如果乔布斯在的话就一定不会允许这样的产品交付给用户么? 作为 iOS 开发人员该对 Apple 有怎样的认识? Apple 未来的发展的大方向是什么? 倘若没有 Apple 的存在,我想各位现在…

【ArcGIS遇上Python】ArcGIS Python按照指定字段批量筛选不同类型的图斑(以土地利用数据为例)

基于土地利用数据,根据用地类型名称,批量筛选出不同类型的用地,生成不同类型的shp数据,以类型名称命名。 文章目录 1. 土地利用原始数据2. 根据名称批量筛选结果3. ArcGIS Python批处理代码ArcGIS Python根据字段属性批量筛选生成shp图层 1. 土地利用原始数据 2. 根据名称批…

使用 StringZipper 压缩、解压字符串

数据压缩是一个软件开发中的常见需求:很多时候需要先将较大的数据进行压缩然后再通过网络等进行传输。在 .NET 中,有多个压缩算法供我们选择:Deflate、GZip 和 Br 。这些压缩算法都是基于流(Stream)的,在对…

【转载】【面试题】你是一个测试工程师,如何保证软件质量?

2019独角兽企业重金招聘Python工程师标准>>> *参*答*案:质量是有层次(内部质量,外部质量,使用质量,过程质量) 内部质量:主要指代码的质量,就需要引入开发工程师进…

C语言试题186之读取范围在1和标准输入读取的size之前每个数据出现的次数

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 读取范…

[转]常见的用户密码加密方式以及破解方法

【作者】张辉,就职于携程技术中心信息安全部,负责安全产品的设计与研发。 作为互联网公司的信息安全从业人员经常要处理撞库扫号事件,产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱…

H5学习笔记

什么是 HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页关键字&#xff1a…

【ArcGIS遇上Python】ArcGIS Python获取某个字段的唯一值(获取指定字段的不同属性值)

以土地利用数据为例,DLMC字段为每个图斑的用地类型,怎样用Python代码获取该字段的属性唯一值? Python代码实现结果: Python源代码: import arcpy from arcpy import env arcpy.gp.overwriteOutput=

一张图解决Android Studio 项目运行按钮灰色

转载于:https://juejin.im/post/5a31ee46f265da430406a166

java学习笔记8--接口总结

生活中的接口&#xff1a; 什么是接口? 一个Java接口是一些方法特征的集合&#xff0c;但没有方法的实现。 在类中实现接口可以使用关键字implements&#xff0c;其基本格式如下&#xff1a; [修饰符] class <类名> [extends 父类名] [implements 接口列表]{}修饰符&…

.NET自定义认证虽然简单,但好用

前言有这样一种场景&#xff0c;就是新项目已经集成了认证中心&#xff0c;或者是都用了统一的认证方式(比如现在常用的JWT)&#xff0c;这样对于项目之间的对接就显得比较方便&#xff0c;至少在认证这块还是能减少一些工作量的。但当上线的老项目需要对接新项目时&#xff0c…

C语言试题187之实现strspn函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…

一张图对比腾讯、阿里、百度的薪资职级

作为中国互联网三大巨头的腾讯、阿里、百度&#xff0c;他们的职级薪资福利等等等一直都是个谜&#xff0c;不为外界所知。今天&#xff0c;我就来为大家全面揭晓—— Here we go&#xff5e; 公司总部 - 腾讯&#xff1a;总部在深圳南山科技园&#xff0c;CBD地段&#xff1…

旺财速啃H5框架之Bootstrap(五)

在上一篇<<旺财速啃H5框架之Bootstrap&#xff08;四&#xff09;>>做了基本的框架&#xff0c;<<旺财速啃H5框架之Bootstrap&#xff08;二&#xff09;>>篇里也大体认识了bootstrap.css样式&#xff0c;下面我们来学习常见的CSS操控内容篇幅。。。。…

【专升本计算机】最新甘肃省专升本考试C语言部分复习题带答案

最新甘肃省专升本考试C语言部分复习题带答案 考点1.1-1.2 1、 C 语言源程序文件经过 C 编译器编译之后生成一个后缀为( )的文件 A. .c B. .obj C. .exe D. .bas 2、 C 语言源程序文件经过 C 编译器连接之后生成一个后缀为( )的文件 A. .c B. .obj C. .exe D. .bas 3、完成 …

浮点数一些设计原理

摘要&#xff1a;本篇文章会讲述浮点数的设计原理&#xff0c;比如如何存储二进制的问题&#xff0c;从而帮助我们更好的编码。 __1. deading code __ console.log(1.0-0.9 0.1); //输出 false console.log(1.0-0.9, 0.1); //输出 0.09999999999999998 0.1 //所以判断浮点运算…

Atitit. http 代理原理  atiHttpProxy  大木马

Atitit. http 代理原理 atiHttpProxy 大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理&#xff1a;1 2. 代理服务器用途1 3. 其中流程具体如下&#xff1a;2 4. 设计规划3 5. 结束语4 1. 面这张图可以清晰地阐明HttpProxy的实现原理&#xff1a; 2. 代理服务器用途 代…