批處理腳本:自動從SVN上更新代碼並編譯C#程序

以前寫過一篇文章,是關於一個用VB.NET寫的版本發佈工具的,地址以下:服務器

http://my.oschina.net/Tsybius2014/blog/517298svn

使用該工具能夠將Debug目錄中編譯好的程序打成安裝包,並選出用於自動更新文件建立自動更新包。工具

今天我對咱們項目中的這一發包過程進行了改進,實現了從SVN上自動更新代碼後使用MSBUILD完成編譯的過程。ui

腳本galatea.bat代碼以下:spa

:: Tsybius2014 - 20160622
svn update
:: if you don't use path by input-param %~1, then use the path below
set vspath=D:\Microsoft Visual Studio 11.0
if "%~1"=="" (call "%vspath%\VC\vcvarsall.bat" x86) else (call "%~1\VC\vcvarsall.bat" x86)
msbuild "%~dp0\XXXXX.sln" /t:Rebuild /P:WarningLevel=2;Configuration=Debug

這個工具被放置到C#項目sln文件同一目錄下就能夠了。.net

(注:以兩個冒號開始的行是註釋行,下文說的第n行,不將這些註釋行計算在內)code

第一行:svn updateblog

svn工具的svn update命令用於從遠程svn目錄更新文件(前提是這個C#項目是從遠程SVN服務器上checkout下來的) 。開發

輸入命令svn help可查看svn命令的使用方法。get

一些電腦已經安裝了TurtoiseSVN,但在運行此命令時仍是會報錯:svn命令時提示'svn'不是內部或外部命令,也不是可運行的程序。經查明,找不到svn.exe是由於安裝TurtoiseSVN時沒有選擇command line client tools,這在1.8版本的TortoiseSVN不是默認安裝的,在1.9中是默認安裝的。

第二行:set vspath=D:\Microsoft Visual Studio 11.0

本腳本支持兩種獲取VS安裝路徑的方法,第一種是經過輸入參數定義,第二種是直接在第二行爲變量vspath賦值

第三行:if "%~1"=="" (call "%vspath%\VC\vcvarsall.bat" x86) else (call "%~1\VC\vcvarsall.bat" x86)

若是第一個輸入參數爲空,則使用vspath的值做爲VS安裝路徑,不然使用第一個輸入參數做爲VS安裝路徑。這句話的目的是要執行vcvarsall.bat主要是爲代碼第四行使用msbuild服務的,調用這個bat文件後,至關於爲當前的控制檯添加了VS開發人員命令提示中包含的全部環境變量。

第四行:msbuild "%~dp0\XXXXX.sln" /t:Rebuild /P:WarningLevel=2;Configuration=Debug

msbuild工具是C#程序的打包工具,安裝VisualStudio後就能使用這一工具了。 XXXXX.sln是咱們要編譯的C#項目的解決方案文件,之因此前面要加%~dp0\,是由於若是沒有這個變量將地址擴展爲絕對地址,其餘程序在調用此批處理腳本時會出現找不到sln文件的問題。

輸入msbuild /?命令可查看svn命令的使用方法。

END

相關文章
相關標籤/搜索