咱們常常在用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是輸入日誌。在裏面能夠看到項目編譯成功或者失敗的信息。工具