如何将Vssget task加到Nant中
(此篇文章有些繁琐,请大家看我Blog下一节)
Vssget这个task在nant中默认是没有的,为了要将VSS DataBase Server中的数据调动了本地来编译,得要在nant中加入 vssget 这个task.方法如下:
1 下载NAnt的最新版本
http://nant.sourceforge.net/builds/ 目前最新版本是0.85版本. 目前最新版本是0.85版本.
将NAnt加入到系统的环境变量中去
2 将NAnt加到环境变量中
在系统变量中找到 “path” 然后将值改为 nant.exe的目录地址 如:d:nant\bin .
3 检查 .Net FrameWork的版本
如果你的.net framework 是1.0的不用修改.则跳到 步骤4.
如果你的.net framework是1.1或者以上的版本则要配置一下. 配置文件在NAnt安装目录\Bin目录下,名称为Nant.exe.config,使用的.Net Framework版本信息存储在frameworkinfo->nantsettings->frameworks>tag下面。如果安装的是1.1版本,那么改为1.1.4322就可以了,看看Windows安装目录下的Microsoft.NET\Framework目录下列出了所有安装的Framework版本.
4 安装并且编译NAntContrib
下载 http://nantcontrib.sourceforge.net/nightly/builds/
进入NAnt的 根目录 运行以下命令
bin\NAnt.exe package
进入NAntContrib 的根目录 运行以下命令
Nant –D:nant.dir=c:\nant-debug-f:NAntContrib.build
其中 c:\nant为nant的根目录(BIN的上一级目录)
将 生成的build\bin 目录下的所有文件都拷贝到 nant\bin
这样在 NAnt中就可以使用VSSGET这个task了.
附1:
用 NAnt CSC 一个.CS文件,源码如下:
<?xml version="1.0"?>
<project name="Test" default=”t1" basedir="."> <!-- name是工程名字 default 里的是即将运行的 target 的名字. Basedir 是根目录的地址-->
<target name="t1">
<csc target="exe" output="Test.exe"><!--target指的输入目标文件的类型,如果是要输出.DLL文件,则把EXE写成library.output是输出文件的名字-->
<sources>
<includes name="Test.cs"/> <!—源文件地址及名字-->
</sources>
</csc>
</target>
</project>
1.1最新的 NAnt 的task及其对应属性列表.
http://nant.sourceforge.net/help/tasks/index.html
附2:
用 NAnt 编译一个 解决方案,源码如下,注释用”//”写,如果要编译时注释用”<!-- -->”写.
<?xml version="1.0"?>
<project name="test2" default="build" basedir="."> //build的时候将运行名为 build这个target
<property name="Solution.Filename" value="D:\ClientVSS\test\test.sln"/>
//name是解决方案的名字 value是解决方案的地址. 可以写成服务器的地址,如: \\dsi_coolbug\共享目录
<property name="Solution.Configuration" value="DEBUG"/>
<property name="Build.OutputFolder" value="d:\result\"/>
// name输出文件名 value :输出文件地址
//上边是第一个解决方案
<property name="Solution2.Filename" value="D:\ClientVSS\test2\test2.sln"/>
<property name="Solution2.Configuration" value="DEBUG"/>
<property name="Build2.OutputFolder" value="d:\result\"/>
//上边是第二个解决方案
<target name="t1">
<solution solutionfile="${Solution.Filename}" outputdir="${Build.OutputFolder}test\" configuration="${Solution.Configuration}" />
</target>
//上边是运行第一个解决方案的target 带”$”号的是引用上边project里的名字.
<target name="t2">
<solution solutionfile="${Solution2.Filename}" outputdir="${Build2.OutputFolder}test2\" configuration="${Solution2.Configuration}" />
</target>
<target name="delete">
<delete dir="c:\b\" failonerror="false" />
</target>//此target是删除 c:\b 这个目录
<target name="build">
<call target="t1" /> //调用 名为 t1 的target
<call target="t2" /> //调用名为 t2 的target
</target>
</project>
附3:
用NANT 获得VSS DataBase服务器上的文件,并输出到本地:
<?xml version="1.0"?>
<project name="Test1" default="t1" basedir=".">
<target name="t1">
<vssget user="coolbug" password="******" localpath="d:\result" dbpath="\\dsi_coolbug\test\NantVSS\srcsafe.ini" path="$/" />
//user :VSS上的帐号 password: VSS上帐号对应的密码
//localpath: 输出到本地的地址 dbpath: 服务器上的INI文件地址
//path:要获得服务器上的哪个目录下的所有文件,本例是根目录下的所有文件.
</target>
</project>
关于 NAntContrib的新的task 及其所有的属性列表,请参见:
http://nantcontrib.sourceforge.net/help/tasks/index.html
VSSGET task的属性列表:
http://nantcontrib.sourceforge.net/help/tasks/vssget.html