批处理脚本:自动从SVN上更新代码并编译C#程序

  • Post author:
  • Post category:其他


之前写过一篇文章,是关于一个用VB.NET写的版本发布工具的,地址如下:


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

使用该工具可以将Debug目录中编译好的程序打成安装包,并选出用于自动更新文件创建自动更新包。

今天我对我们项目中的这一发包过程进行了改进,实现了从SVN上自动更新代码后使用MSBUILD完成编译的过程。

脚本galatea.bat代码如下:

:: 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文件同一目录下就可以了。

(注:以两个冒号开始的行是注释行,下文说的第n行,不将这些注释行计算在内)


第一行

:svn update

svn工具的svn update命令用于从远程svn目录更新文件(前提是这个C#项目是从远程SVN服务器上checkout下来的) 。

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

一些电脑已经安装了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

转载于:https://my.oschina.net/Tsybius2014/blog/699387