以前没使用Nant和Nunit构建C#代码的自动化构建,今天自己写了一个C#程序,想用Nant和Nunit构建C#代码。可写好build文件后运行UnitTest时遇到了麻烦。命令行提示如下:
Could not load file or assembly 'nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77' or one of its dependencies. The system cannot find the file specified.
查了一下资料解决了这个问题。
解决方法是:
一、在该程序的config文件(如果程序名是money.dll,则该文件名为money.dll.config)中加入如下代码:
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
- <configuration>
- <runtime>
- <assemblyBindingxmlnsassemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1">
- <dependentAssembly>
- <assemblyIdentitynameassemblyIdentityname="nunit.framework"
publicKeyToken="96d09a1eb7f44a77"culture="Neutral"/>- <bindingRedirectoldVersionbindingRedirectoldVersion="2.0.6.0"newVersion="2.4.3.0"/>
- <bindingRedirectoldVersionbindingRedirectoldVersion="2.1.4.0"newVersion="2.4.3.0"/>
- </dependentAssembly>
- </assemblyBinding>
- </runtime>
- </configuration>
二、使用VS2005提供的gacutil把nant.core.dll 和 nant.framework.dll注册一下。
具体做法是:
1、在window开始菜单用运行VS所带的Visual Studio 2005 Command Prompt。
2、切换到nunit的bin目录下
3、顺序运行下列命令
gacutil /i nunit.core.dll
// 注册core
gacutil /i nunit.framework.dll
//注册framework
gacutil /l
//查看是否注册上
三、大功告成。
现在运行 nant unittest 就完事大吉。
附 nant 的 build 文件如下:
- <?xmlversionxmlversion="1.0"?>
- <projectnameprojectname="CSharpMoney"default="ut">
- <propertynamepropertyname="output.dir"value="../bin"/>
- <propertynamepropertyname="output.dll"value="../bin/cs-money.dll"/>
- <propertynamepropertyname="reports.dir"value="../reports"/>
- <targetnametargetname="clean">
- <deletedirdeletedir="${output.dir}"/>
- <deletedirdeletedir="${reports.dir}"/>
- </target>
- <targetnametargetname="copyfile"depends="clean">
- <mkdirdirmkdirdir="${output.dir}"unless="${directory::exists(output.dir)}"/>
- <copyfilecopyfile="../nunit/bin/nunit.framework.dll"todir="${output.dir}"
- if="${file::exists('nunit/bin/nunit.framework.dll')}"/>
- </target>
- <targetnametargetname="build"depends="copyfile">
- <csctargetcsctarget="library"output="${output.dll}"debug="true">
- <sources>
- <includenameincludename="*.cs"/>
- </sources>
- <references>
- <includenameincludename="../nunit/bin/nunit.framework.dll"/>
- </references>
- </csc>
- </target>
- <targetnametargetname="ut"depends="build">
- <mkdirdirmkdirdir="${reports.dir}"/>
- <execprogramexecprogram="..NUnitunit-console.exe">
- <argvalueargvalue="${output.dll}"/>
- <argvalueargvalue="/config=cs-money.dll.config"/>
- <argvalueargvalue="/xml=${reports.dir}TestReport-Unit.xml"/>
- <argvalueargvalue="/nologo"/>
- <argvalueargvalue="/noshadow"/>
- </exec>
- </target>
- </project>
以上介绍Nant和Nunit构建C#代码
【编辑推荐】