zoukankan      html  css  js  c++  java
  • 利用批处理结合Msbuild实现快速编译

    我们经常在用vs2005做项目的时候会把一个项目分成几个模块(不管是对于功能上,还是系统构架上面),为的是以后部署,还有修改维护时候的方便。这样就会带来一个问题,随着模块的增加(这里所说得每个模块就是指每个项目),我们如果依赖IDE的话,每次都得从源代码管理器读取最新得版本,进行编译。然而IDE加载得时候会加载很多必须得文件,这样就大大浪费了时间。再有就是我们不能一次都把这些项目都编译了。我们不得不重复着打开编译这样的顺序。这里也许大家会想到nant,但是nant不支持.net2.0(听说是被微软收购了...)不管怎样MS给我们提供了具有同样功能的工具:MSBuild ,该工具位于:(前提是装了FW2.0)C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MsBuild.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:WINDOWSMicrosoft.NETFrameworkv2.0.50727MsBuild.exe" EntitiesEntities.sln  
    /t:rebuild 
    /p:configuration=Debug  >Entities.log
    echo Building Entities.sln Complete!

    echo Building Business.sln, please wait a minute...
    "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MsBuild.exe" BusinessBusiness.sln  
    /t:rebuild 
    /p:configuration=Debug  >Business.log
    echo Building Business.sln Complete!

    echo Building UI.sln, please wait a minute...
    "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MsBuild.exe" UIUI.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=binDebug
    OutDir就是指明了Release或者Debug的输出路径,如果不设置就是用IDE中给该项目设置的路径。
    >Business.log是输入日志。在里面可以看到项目编译成功或者失败的信息。

  • 相关阅读:
    触摸屏与usb鼠标同时支持
    QT国际化(lupdate/linguits/lrelease)生成.ts,转换成.qm方法
    Qt5 使用lambda
    c++中lambda表达式的用法
    异或运算的作用
    函数指针和指针函数用法和区别
    前端html页面学习---html部分
    二:maven构建module
    一:使用maven构建项目
    maven项目发布到tomcat后没有lib目录解决方案
  • 原文地址:https://www.cnblogs.com/ark-zhang/p/3259705.html
Copyright © 2011-2022 走看看