使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数
在为开源项目 easiwin/MSTestEnhancer 进行持续集成编译时,需要在编译命令中传入较多的参数。这对于新接手此项目的人来说,成本还是高了一点儿。本文将介绍 MSBuild 响应文件 (MSBuild Response Files, *.rsp) 来优化命令行编译体验。
我们在 msbuild 命令中加入 /? 参数可以看到它对响应文件的解释:
> dotnet build /?
# 省略了一部分输出,只保留响应文件相关的两个。
@<file> 从文本文件插入命令行设置。若要指定
多个响应文件,请分别指定每个响应
文件。
自动从以下位置使用任何名为 "msbuild.rsp" 的
响应文件:
(1) msbuild.exe 的目录
(2) 生成的第一个项目或解决方案的目录
/noautoresponse 不自动包括任何 MSBuild.rsp 文件。(缩写:
/noautorsp)
当然,使用 dotnet msbuild 或者直接使用 msbuild.exe 都是一样的具备此功能。
那么响应文件到底是什么呢?我们在 dotnet build 命令后传入的参数就可以是响应文件的内容。
- 响应文件以
.rsp扩展名结尾,放在任何地方就行,只需要在dotnet build命令中用@指定即可。 - 也可以用预定的文件名
Directory.Build.rsp,放在sln同级目录或者父级目录中。
比如,在这个项目中,我直接在解决方案同级目录中新建了 Directory.Build.rsp 文件,并写入这些内容:
/p:Configuration=Release
/maxcpucount
/p:Version=1.6.0-beta
/p:AssemblyVersion=1.6.0.0
这样,当执行命令 dotnet build 或 dotnet msbuild 时,将执行这些事情:
- 使用 Release 配置进行编译
- 当前计算机有多少 CPU 核,就使用多少个进程进行并行编译
- NuGet 包打包版本设置为 1.6.0-beta(这将覆盖 csproj 中设置的 Version 属性)
- 程序集版本设置为 1.6.0。0(这将覆盖 csproj 中设置的 AssemblyVersion 属性)
当然,还可以写更多的事情,但命令依旧简单——对新开发者是非常友好的。
参考资料
- MSBuild Response Files - Visual Studio - Microsoft Docs
- Default or specify msbuild properties in an external file - Stack Overflow
- How to use MSBuild.rsp or otherwise specify default Visual Studio MSBuild.exe command line switches - Super User
使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数的更多相关文章
- win10 uwp 使用 msbuild 命令行编译 UWP 程序
原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...
- Android 命令行编译、打包生成apk文件
一.搭建搭建环境 1. 安装JDK 和 Android SDK 2. 配置环境变量 D:\android-sdk-windows\tools C:\Program Files\Java\jdk1. ...
- 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类
今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在W ...
- 命令行编译多个java文件
如何使用命令行编译多个java文件 文件结构: method 1 cd javaproject javac -sourcepath javapath -d classpath javapath/*.j ...
- 软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序
软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序 格式:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数 ...
- dotnet core 命令行使用web deploy 部署项目到远程IIS
众所周知dotnet cli可以用来编译和生成发布.net core,其实dotnet publish 还能进行WebDeploy.先解释一下使用场景一般是用于持续部署 dotnet publish进 ...
- 使用devenv/MSBuild在命令行编译sln或csproj
一 使用devenv来build单个project devenv是VisualStudio的可执行程序,一般安装在“C:\Program Files (x86)\Microsoft Visual ...
- jmeter之jtl文件解析(生成测试报告)命令行
jmeter -g TestReport201905060302.jtl -o ./report 1:命令行模式将jtl转成测试图表-注意此方法只使用jmeter3.0以后版本 第一种:在测试过程中将 ...
- 用命令行编译运行java文件的乱码问题
之前在写的时候没有遇到过这个问题,用惯了eclipse之后突然用Notepad++就出现乱码了 我在编写的时候 指定Noepad++的编码是 UTF-8编码,然后进入命令行,编译的时候就出现了乱码 然 ...
随机推荐
- sass的多种用法
sass的多种用法 主要归纳总结sass的常见用法,作为个人笔记使用,部分知识点并不仔细讲解.具体可参考文档:sass官网 一.嵌套 .svg{ position: absolute; left: 0 ...
- Canvas几种模式的区别
1.screen space-overlay UI显示在最前方 2.screen space-camera 箭头指的是canvas 这样可以放置东西在UI前方和UI后方 3.world space 做 ...
- 不小心把sudoer改错了的补救方法
原本是感觉每次 sudo command 都要输入密码太费事了,就想把密码去掉.好了怎么去掉呢,自然是修改 /etc/sudoers 可是不小心修改错了,结果悲剧出现了:由于是在非root用户模式下, ...
- 负载均衡,会话保持,session同步
一,什么负载均衡 一个新网站是不要做负载均衡的,因为访问量不大,流量也不大,所以没有必要搞这些东西.但是随着网站访问量和流量的快速增长,单台服务器受自身硬件条件的限制,很难承受这么大的访问量.在这种情 ...
- MYSQL题讲答案
2丶查询‘生物’课程比‘物理’课程成绩高的所有学生的学号 思路: 获取所有有生物课成的人(学号,成绩) -- 临时表 获取所有有物理课程的人(学号,成绩) -- 临时表 根据[学号]连接两个临时表: ...
- 3.java内存模型以及happens-before规则
1. JMM的介绍 在上一篇文章中总结了线程的状态转换和一些基本操作,对多线程已经有一点基本的认识了,如果多线程编程只有这么简单,那我们就不必费劲周折的去学习它了.在多线程中稍微不注意就会出现线程安全 ...
- IOS-下载动画
就2小时教会你抽丝剥茧CAAnimation核心动画之精美的下载动画 header 设计灵感 设计此效果的作者 Nick; images 开始之前你需要了解的 先上一张CAAnimation层次图: ...
- Android_布局属性大全
RelativeLayout 第一类:属性值为true可false android:layout_centerHrizontal 水平居中 android:layout_centerVe ...
- [WinForm]FastColoredTextBox控件(附源码)
Fast Colored TextBox is text editor component for .NET. Allows you to create custom text editor with ...
- 【CodeForces - 870C】
题意: 计算一个整数最多可以拆分为多少个合数(要求拆分的全是合数).例如:12的拆分法案是12=4+4+4. 合数是指除了1之外的非素数(正整数). 思路: 偶数的话用4.6就可以满足,奇数的话减去一 ...