利用批处理结合Msbuild实现快速编译
我们经常在用vs2005做项目的时候会把一个项目分成几个模块(不管是对于功能上,还是系统构架上面),为的是以后部署,还有修改维护时候的方便。这样就会带来一个问题,随着模块的增加(这里所说得每个模块就是指每个项目),我们如果依赖IDE的话,每次都得从源代码管理器读取最新得版本,进行编译。然而IDE加载得时候会加载很多必须得文件,这样就大大浪费了时间。再有就是我们不能一次都把这些项目都编译了。我们不得不重复着打开编译这样的顺序。这里也许大家会想到nant,但是nant不支持.net2.0(听说是被微软收购了...)不管怎样MS给我们提供了具有同样功能的工具:MSBuild ,该工具位于:(前提是装了FW2.0)C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MsBuild.exe。该工具和ant一样都是按照它一个按照它约定的xml文档来进行解析编译。庆幸的是我们编译项目的时候不需要去编写这个xml文档(用ant的时候我们经常会编写一个.build文件)当然我们也可以去写。vs2005的项目文件(.sln)我们可以用notepad看到,它就是一个xml文档,而且规格完全符合msbuild所需要的文档结构。由此我不得不佩服MS整合的厉害。
下面我就利用批处理结合Msbuild实现快速编译,假设我们的项目Project目录下包含3个部分,第一部分为实体项目(目录名称为Entities,项目名称为Entities.sln,第二部分为业务逻辑(目录为Business,项目名称为Business.sln),第三部分为UI(目录为UI,项目名称为UI.sln)。编译顺序为先编译Entities再编译Business最后才能编译UI。
我们在project下面建一个bat批处理文件。在里面编写批处理代码
@echo off
echo Delete the output directory!
rd Release /s/q
rd Debug /s/q
echo Building Entities.sln, please wait a minute...
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MsBuild.exe" Entities\Entities.sln
/t:rebuild
/p:configuration=Debug >Entities.log
echo Building Entities.sln Complete!
echo Building Business.sln, please wait a minute...
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MsBuild.exe" Business\Business.sln
/t:rebuild
/p:configuration=Debug >Business.log
echo Building Business.sln Complete!
echo Building UI.sln, please wait a minute...
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MsBuild.exe" UI\UI.sln
/t:rebuild
/p:configuration=Debug >UI.log
echo Building UI.sln Complete!
到这里就结束了
前面三行是清空输入路径。
需要解释的是MsBuild后面的参数/t是taget :可以是Rebuild。
/property:<n>=<v> 设置或重写这些项目级属性。<n> 为
属性名,<v> 为属性值。请使用
分号或逗号分隔多个属性,或者
分别指定每个属性。(缩写为: /p)
示例:
/p:configuration=Debug;OutDir=bin\Debug\
OutDir就是指明了Release或者Debug的输出路径,如果不设置就是用IDE中给该项目设置的路径。
>Business.log是输入日志。在里面可以看到项目编译成功或者失败的信息。
利用批处理结合Msbuild实现快速编译的更多相关文章
- 使用roslyn代替MSBuild完成解决方案编译
原本我是使用批处理调用 MSBuild 完成解决方案编译的,新版的 MSBuild 在 Visual Studio 2015 会自带安装. 当然在Visual Studio 2015 中,MSBuil ...
- 利用 Create React Native App 快速创建 React Native 应用
本文介绍的 Create-React-Native-App 是非常 Awesome 的工具,而其背后的 Expo 整个平台也让笔者感觉非常的不错.笔者目前公司是采用 APICloud 进行移动应用开发 ...
- 快速编译system.img、userdata.img、boot.img的方法
快速编译system.img和boot.img的方法 快速编译system.img,可以使用这个命令: #make systemimage 快速编译boot.img,可以使用以下命令: #make b ...
- 利用sublime的snippet功能快速创建代码段
在前端开发中我们经常会输入相同的一些基本代码,例如常用的jquery引用,bootstrap框架,cssreset等等,如果每次使用时在复制粘贴感觉很麻烦,这里介绍一种更为简洁的方法 利用sublim ...
- C#利用 string.Join 泛型集合快速转换拼接字符串
C#利用 string.Join 泛型集合快速转换拼接字符串 List<int> superior_list = new List<int>(); superior_list. ...
- [UE4]使用UnrealVS扩展快速编译C++代码
一.如果UE4 编辑器已经打开,则VS中的重新生成项目将不能使用,一定要关了UE4 编辑器才可以.一般不是有VS自身的编译UE4的C++代码 二.epic提供了UnrealVS扩展,可以快速编译C++ ...
- mtcp的快速编译(连接)
mtcp的快速编译 http://mos.kaist.edu/guide/config/03_build_mtcp.html 介绍DPDK中使用mtcp的文档 https://dpdksummit.c ...
- 快速编译system.img和boot.img的方法【转】
本文转载自:http://www.cnblogs.com/wanqieddy/archive/2012/10/22/2734024.html 快速编译system.img,可以使用这个命令: #mak ...
- win10 uwp 使用 msbuild 命令行编译 UWP 程序
原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...
随机推荐
- 14-----BBS论坛
BBS论坛(十四) 14.1注册完成跳到上一个页面 (1)front/form.py # front/forms.py __author__ = 'derek' from ..forms import ...
- 6-----Scrapy框架中Item Pipeline用法
当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...
- $('#').formValidation校验网址
$('#addCarouselInfoForm').formValidation({ message: '格式不正确', //不忽略隐藏域验证 excluded: [], icon: { valid: ...
- 关于imageview matrix
Matrix 是 Android SDK 提供的一个矩阵类,它代表一个 3 X 3 的矩阵 那么这 9 个浮点数的作用和意义是什么呢,从 Android 官方文档上看,它为这个数组中的每一个元素都定义 ...
- pandas DataFrame数据转为list
dfpath=df[df['mm'].str.contains('20180122\d')].values dfplist=np.array(dfpath).tolist()
- ubuntu 16.04安装后不能登入
启动后,选择ubuntu高级选项,选择恢复模式,在恢复模式下 sudo apt-get update sudo apt-get upgrade 另外,可以在此模式下,选择nvidia驱动
- [转]Knockoutjs快速入门
本文转自:http://www.cnblogs.com/yinzixin/archive/2012/12/21/2827356.html Knockoutjs是一个JavaScript实现的MVVM框 ...
- [转]JS跨域总结
本文转自:http://www.cnblogs.com/qixuejia/archive/2012/08/29/2662220.html javascript跨域有两种情况: 1.基于同一父域的子域之 ...
- 服务间调用--feign跟ribbon
微服务一般来说当然是多服务多实例的,那么这些服务之间如何相互调用呢?spring cloud之前我们用dubbo,把服务开放出来,在xml配好后就可以像调用本地service一样调用其它模块的服务了: ...
- C/C++中 static 的作用
在C中,有三个作用: 1.修饰全局变量: 作用是隐藏,也就是这个全局变量仅在本文件中可见. 2.修饰局部变量: 作用是扩展变量的生存期,令这个局部变量成为静态的. 3.修饰函数: 作用是隐藏,将此函数 ...