• 【转】MsBuild快速编译解决方案(2)


    利用批处理结合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是输入日志。在里面可以看到项目编译成功或者失败的信息。

  • 相关阅读:
    nginx使用vhost子目录
    nginx服务报错解决
    反向代理远端 单台tomcat 使用域名代理
    反向代理远端 单台tomcat 使用ip+端口
    nginx反向代理本地 两台web负载均衡 使用域名代理
    nginx反向代理本地 两台web负载均衡 使用ip+端口代理
    nginx反向代理本地 单台wed -使用域名代理
    nginx反向代理本地 单台wed -使用ip+端口代理
    php 在函数内引用全局变量 讲解引用
    Xdebug的安装与使用
  • 原文地址:https://www.cnblogs.com/zhangyang/p/1356895.html
Copyright © 2020-2023  润新知