咱们常常在用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是输入日志。在里面能够看到项目编译成功或者失败的信息。工具