MSBuild 命令的简单使用
位置
在 VS 安装目录下,如:D:\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin
命令
使用 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) 参数:
在使用 Jenkins 的 MSBuild 插件进行编译项目时发现该命令不能被识别:
参考《[使用 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:\JenkinsData\workspace\Src\desktop.sln -p:SolutionDir=D:\JenkinsData\workspace\Src\
-p 和 /p 应该是等价的。官网介绍如下:
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%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 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:\Build\exe set src_dir=%~pd0\Src :Jenkins 工作空间路径为 %WORKSPACE% :set src_dir=%WORKSPACE%\Src set desktop_dir=%src_dir%\desktop :设置编译的环境变量 :set PATH="D:\Microsoft Visual Studio\2022\Enterprise\Common7\IDE";%PATH% set PATH="D:\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin";%PATH% :执行编译 ECHO ***************************************** Build desktop ***************************************** :devenv %desktop_dir%\desktop.sln /rebuild DEBUG :devenv %desktop_dir%\desktop.sln /build DEBUG /project %desktop_dir%\UI\Main.Gui.csproj MSBuild %desktop_dir%\UI\Main.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 Installer\16.7\bin\x86\ advinst.exe /rebuild "E:\Build\ddPCR.aip" pause
其中存放忽略规则的文件 exclude.txt 的内容为:
logs .gitignore .xml .pdb data
感谢阅读!
原创文章,转载请注明: 转载自 独立观察员(dlgcy.com)
本文链接地址: [MSBuild 命令的简单使用](https://dlgcy.com/msbuild-simple-use/)
关注微信公众号 独立观察员博客(DLGCY_BLOG) 第一时间获取最新文章
发表评论