利用批处理结合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:// ...
随机推荐
- 利用SharePoint项目改造的Web项目问题——Windows身份验证
最近领导交给一个项目:改造现有的SharePoint项目.UI层是做好的,只需要把实现的所有接口方法重新实现一遍,改造成Web版的实现方式. 现在要做基于Windows身份认证的登陆: 配置IIS—— ...
- P3802 小魔女帕琪
传送门 考虑前面7个魔法 如果前面七个魔法各不相同,那么就能完成一次帕琪七重奏 设 A=a1*a2*...*a7,S=a1+a2+...+a7,B=S*(S-1)*...*(S-6) 对于不同的施法顺 ...
- 江西财经大学第一届程序设计竞赛 A
链接:https://www.nowcoder.com/acm/contest/115/A来源:牛客网 题目描述 "挤需体验五番钟,里造会挨上这款游戏!" 怎么可能嘛!当我是傻子吗 ...
- Experimental Educational Round: VolBIT Formulas Blitz K
Description IT City company developing computer games decided to upgrade its way to reward its emplo ...
- NPOI2.0导出excel之添加样式、边框和表头
//优化后导出excel public System.IO.Stream ExcelStream(string search) // { var orderBusiniss = Containers. ...
- [2019BUAA软工]第一次团队作业
Team V1 团队启动 BUAA Team V1 于2019年3月正式成立,将开始为期四个月的合作. 队员介绍 Name Summary Sefie wxmwy V1-bug制造公司资深工程师精 ...
- Spring Boot 实现ErrorController接口处理404、500等错误页面
在项目中我们遇到404找不到的错误.或者500服务器错误都需要配置相应的页面给用户一个友好的提示,而在Spring Boot中我们需要如何设置. 我们需要实现ErrorController接口,重写h ...
- Mac使用zsh导致maven命令无效的解决方案
第一步: vim ~/.zshrc 第二步:在.zshrc末尾加上 source ~/.bash_profile: 保存推出了 第三步 source ~/.bash_profile
- Unity GameObject.FindObjectOfType<>(); 按类型查找游戏对象
FindObjectOfType<>() 是按类型查找游戏对象.<>里面填写类型,那要是有多个这种类型的呢?来试一下. 1. 新建一个场景,新建一个Test.cs脚本,内容 ...
- PlayMaker 操作界面超级详细介绍
原文:https://www.indienova.com/u/christiantam/blogread/1214