2019-7-3-如何通过命令行-msbuild-编译项目
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
如何通过命令行 msbuild 编译项目
|
lindexi
|
2019-07-03 19:12:19 +0800
|
2019-02-24 15:32:36 +0800
|
编译器 VisualStudio msbuild
|
本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败
在开始菜单可以找到 VisualStudio 的安装文件夹,基本上开发者命令行的英文名叫 Developer Command Prompt 中文名是开发者命令行
打开之后默认是 C 盘的一个路径,假如自己的项目所在文件夹是 D:\lindexi\github 需要先通过 cd 将命令行的工作路径修改为当前需要编译的路径,通过下面命令可以从 C 盘到代码文件夹
> cd /d 代码所在文件夹
对于一个新的仓库,首先需要还原所有安装的 Nuget 包,此时建议将 Nuget 这个程序加入到环境变量,可以从 官网 下载最新版本的 Nuget 程序,如我下载了 5.0 的版本,我将下载的 Nuget 程序放在了 D:\lindexi\ 文件夹,将 Nuget 下载的程序修改文件名是 Nuget.exe 然后将 D:\lindexi\nuget.exe 加入到环境变量
在 Windows 将某个文件夹加入到环境变量的方法是右击此电脑属性(如果现在还有开发者使用的是 Windows7 那么请自己百度如何将某个文件夹添加到环境变量)点击高级系统设置
在系统属性页面点击高级,找到环境变量按钮
在系统变量里面找到 Path 变量,双击就可以编辑,建议只修改用户的变量
在最后一行空白的地方双击一下,输入需要添加到环境变量的文件夹,如我上面的 D:\lindexi 文件夹
添加完成之后如果想要命令行生效,需要先将命令行关闭,再重新打开,进入需要编译的文件夹
通过 Nuget 还原请使用下面代码
> nuget restore
这个命令可以在 sln 文件所在的文件夹输入,也可以在 nuget.package 文件所在的文件夹里面输入,一个是还原所有项目的 nuget 一个是还原一个项目的
如果有多个 sln 文件,如 a.sln 和 b.sln 请在 Nuget restore 的最后添加上需要还原的文件
> nuget restore a.sln
然后通过 msbuild 还原新的项目格式的引用,也建议将 msbuild 加入到环境变量
以下是一些版本对应的路径
VisualStudio 2017 企业版 : C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin
VisualStudio 2019 社区版 : C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\
设置完成环境变量,打开命令行使用下面代码还原
> msbuild -t:restore
还原之后通过 msbuild 编译
> msbuild
通过 msbuild 编译默认是不需要添加任何参数,因为所有参数都在 sln 文件
如果需要特殊指定,如编译 UWP 项目请看 win10 uwp 使用 msbuild 命令行编译 UWP 程序
如编译为 release 可以使用 -p 修改 configuration 属性为 release 编译
msbuild -p:configuration="release"
总结一下,对于一个新的项目,需要先还原然后再编译
nuget restore
msbuild -t:restore
msbuild
下面是 msbuild 的一些常用的命令
- 编译为 Release 代码
-p:configuration="release" - 清理项目
-t:clean - 重新编译
-t:rebuild - 编译项目
-t:build默认可以忽略这个参数 - 发布
-t:Publish
多个参数之间可以放在一起,如还原代码之后重新编译为 release 的代码
msbuild -t:restore -p:configuration="release" -t:rebuild
这里的 -t 和 /t 是相同的,也就是可以将上面代码替换为
msbuild /t:restore /p:configuration="release" /t:rebuild
这里的 -t 就是调用某个 Target 的代码,这里的 -p 就是定义一个属性,关于 Target 和属性请看 理解 C# 项目 csproj 文件格式的本质和编译流程
更多编译相关请看手把手教你写 Roslyn 修改编译
2019-7-3-如何通过命令行-msbuild-编译项目的更多相关文章
- 如何通过命令行 msbuild 编译项目
本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败 在开始菜单可以找到 VisualStudio 的 ...
- VS2015——命令行下编译、静态库动态库制作以及断点调试
c程序编译流程 程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序.经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的 ...
- 命令行创建Maven项目卡住以及出错解决办法。
第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问 ...
- 学习笔记-使用cmd命令行创建nodejs项目
使用cmd命令行创建nodejs项目 1)在DOS下cd 进入到你想要创建项目的路径. 2)mkdir sing (创建一个sing文件夹) 3)cd sing 4) npm init (初始化工程 ...
- [转]Windows中使用命令行方式编译打包Android项目
http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...
- c# 命令行下编译c#文件 // c# file类读写文件
c# 命令行下编译c#文件 2010-03-01 15:02:14| 分类: c# 学习|字号 订阅 在 开始 ——>程序 ——>vstool中打开vs2008命令提示. 通过 ...
- Cordova之如何用命令行创建一个项目(完整示例)
原文:Cordova之如何用命令行创建一个项目(完整示例) 1. 创建cordova项目 (注意:当第一次创建或编译项目的时候,可能系统会自动下载一些东西,需要一些时间.) 在某个目录下创建cordo ...
- Android系列之Android 命令行手动编译打包详解
Android 命令行手动编译打包过程图 [详细步骤]: 1使用aapt生成R.java类文件: 例: E:\androidDev\android-sdk-windows2.2\tools> ...
- 通过命令行创建Django项目
只有安装的是pycharm专业版才可以直接在pycharm面板中直接创建Django项目 如果不是专业版,可以通过命令行创建Django项目 https://www.cnblogs.com/jiare ...
随机推荐
- 区间dp——cf983b
推出一个很神奇的结论就可以进行dp了 这个结论不光可以用在异或操作上,还可以用在任意操作里 /* 首先可以做出一个关于f的递推式 f[1..n]=f[ f[1..n-1],f[2..n] ] 那么直接 ...
- NOIp2018集训test-9-22(am/pm) (联考三day1/day2)
szzq学长出的题,先orz一下. day1 倾斜的线 做过差不多的题,写在我自己的博客里,我却忘得一干二净,反而李巨记得清清楚楚我写了的. 题目就是要最小化这个东西 $|\frac{y_i-y_j} ...
- NX二次开发-time.h获取计算机本地时间
NX9+VS2012 #include <stdio.h> #include <time.h> char *wday[] = { "Sun", " ...
- Core Data could not fulfill a fault
做项目的时候在iOS4系统遇到过这样一个crash,console显示的错误信息是"Core Data could not fulfill a fault". 字面意思是什么?&q ...
- 【.NET类库】通过SharpSocket进行TCP/UDP通信数据传输
类库作用: 用于基于TCP/UDP协议的数据通信,调用简单,高效. 封装了和业务无关的底层细节,让开发人员可以专注于做业务 完善的示例代码: 针对类库的几种用法,都提供了较为详细的示例代码 一.TCP ...
- jquery实现点击按钮弹出层和点击空白处隐藏层
昨天做项目遇到一个问题,和大家分享下,jquery实现点击按钮弹出层和点击空白处隐藏层的问题 if($('.autoBtn').length){ $('.autoBtn' ...
- NEERC 1999 Advertisement /// oj22646
题目大意: 输入k,n :k为每位慢跑者最少应看到的广告牌数 接下来n行 描述第 i 位慢跑者的途径路段 输出需要设立的广告牌数 接下来每行为设立地点 Sample Input 5 101 1020 ...
- 转Git仓库分支(Branch)和标签(Tag)
仓库的分支(Branch)规范,影响到每个团队的工作流的一致性:标签(Tag)便于开发团队.测 试团队和其他团队识别每个项目的版本,特别是在协同处理线上问题的时候,大家可以非常清楚 地知道线上运行版本 ...
- 论文阅读笔记---ShuffleNet V1
01 ShuffleNet V1要解决什么问题 为算力有限的嵌入式场景下专门设计一个高效的神经网络架构. 02 亮点 使用了两个新的操作:pointwise group convolution和cha ...
- vc枚举本机端口信息
关于查看本机端口信息,可能大多数人都知道在cmd下的netstat 命令,殊不知该命令在底层也是调用相关api来实现的,相关函数有:GetTcpTableGetExtendedTcpTableGetU ...