批处理脚本:自动从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

相关文章
相关标签/搜索