目录
环境配置
基本语法
参数指令
对各类程序的命令参数的掌握是软件工程师必修课之一,它是通往自动化、高效化开发测试的必经之路。对于MSBuild,我们可以借助它以一种轻量级的形式去完成对于项目又或解决方案的生成,而避开使用繁大的IDE进行编译。
环境配置
为使调用方便,通常会将MSBuild配置环境变量中。查找MSBuild.exe的所在路径(在安装VS时一般会附附带安装上,直接搜索下即可),记录下路径,然后按 Win + R 调入运行(管理员) 并输入 cmd,接着输入以下指令:
#如果需要加入到系统变量则在Path前加入 /m 即可
setx Path "%Path%;MSBuild的路径"
基本语法
欲生成基于 *.sln , *.vxproj 等格式的解决方案,可直接使用MSBuild生成,语法如下:
MSBuild [项目文件] [开关]
# 开关即设定用的参数
# 示例 : msbuild text.sln
参数指令
参数 | 描述 |
-ds[:True 或 False] | 若设为True: 生成日志,记录生成每个节点时的详细信息。 例: msbuild test.sln -ds:True |
-graph[:True or False] | 若设为True: 构造和生成项目的图。 图的内容涉及到标识对窗体依赖项的项目引用。 * 需要 MSBuild 16 或更高版本。 |
/? 或 -h | 显示用法信息。 比如想知道msbuild所有的参数用法可以输入: |
-ignore: extensions | 忽略生成项目中可能包含的扩展名格式。 使用分号或逗号分隔多个扩展名。 如以下示例所示: |
-isolate[:True 或 MessageUponIsolationViolation 或 False] | 使 MSBuild 单独生成每个项目。 当设置为 MessageUponIsolationViolation(或缩略Message)时,如果设置了 -outputResultsCache 开关,则仅序列化顶级目标中的结果。 这是为了减少依赖项项目中违反隔离规定的目标由于依赖于缓存目标而使用不正确的状态的机会,因为缓存目标的副作用不会被考虑在内。 |
-m[:number] | 指定生成时要使用的最大并发进程数。 如果不包含此开关,则默认值为 1。 如果包含此开关而没有指定值,MSBuild 将使用计算机中的处理器总数作为其值。 用8个进程来协助生成test解决方案,示例: msbuild test.sln -m:8 |
-nr:value | 对于上面开关的进一步细化配置,启动或禁止复用MSBuild 生成节点。 |
-orc[:cacheFile] | MSBuild 生成结束时将生成结果的缓存写入到Output 文件中。 |
-profileEvaluation:<file> | 分析 MSBuild 生成报告,并将结果写入到指定文件中。 如果指定的文件扩展名为“.md”,则以 Markdown 格式生成结果。 否则,生成制表符分隔文件。 |
-p:name=value | 设置或重写指定项目级属性,其中 name 是属性名称,value 是属性值。 单独指定每个属性,或使用分号或逗号分隔多个属性 常用到的是对发布时的解决方案配置和输出目录,示例: |
-r | 在生成实际目标之前运行 Restore 目标。 |
-rp:name=value | 仅在还原期间改写项目的配置属性,对 -property(-p) 参数的重新设定。 name 是属性名称,value 是属性值。 使用分号或逗号分隔多个属性,或单独指定每个属性。 |
-t:targets | 在项目中生成指定目标。 单独指定每个目标,或使用分号或逗号分隔多个目标。 示例: |
-val[schema] | 验证项目文件,如果验证成功,则生成项目。 如果指定 schema,则针对指定的架构验证项目;如果没有指定 schema,则以默认架构验证项目。 |
-v:level | 指定要在生成日志中显示的信息量。 每个记录器基于为该记录器设置的详细级别显示事件。 可以指定以下详细级别:q[uiet]、m[inimal]、n[ormal](默认)、d[etailed] 和 diag[nostic]。 示例:-v:quiet |
@file | 从文本文件中插入命令行参数。 示例: msbuild test.sln @ExteriorFile.txt |
* 常用参数以红色标记
拓展资料:MSBuild 命令行参考 - MSBuild | Microsoft Learn