我有一组最初为。net 2.0构建的测试。我们使用带有MBunit的Gallio从控制台使用Gallio. echo运行它们。Gallio坚持要运行2.0的CLR,然后当它看到测试是为。net 4.0构建的时候就崩溃了。我做错了什么?我能强迫Gallio使用。net 4吗?我在机器上肯定安装了4个。
错误信息:
开始时间:4:07 PM初始化运行时和加载插件。验证测试文件。初始化测试运行器。正在进行测试主持人于2011年11月9日下午4:08:00开始。在CLR v2.0.50727运行时下运行。主持人在2011年11月9日下午4:08:08停止。主机进程退出,代码为:0运行测试时发生致命异常。可能的原因包括无效的测试运行程序参数和堆栈溢出。model . modelexception:在调用测试驱动程序时发生了异常。-> Gallio.Model.ModelException:无法从'C:testsmytest.dll'加载测试程序集。——>系统。BadImageFormatException:无法加载文件或程序集'file:///C:testsmytest.dll'或其依赖项之一。此程序集由比当前加载的运行时更新的运行时生成,因此无法加载。
如果你在可执行文件上使用"/runtime-version"属性,你可以指定要加载的框架的确切版本-小心,它要求该值与WindowsMicrosoft中的文件夹名称完全匹配。. NetFramework -例如,"v4.0.30319"
这很可能是因为您的appname.exe.config
定义了一个<startup>
节点,该节点强制运行时为2.0.50727,例如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
Gallio检查这个文件是否有这个属性,如果找到就使用它。如果没有显式设置,Gallio将返回到。net框架版本的自动检测。
因此,如果你删除这个<startup>
节点,Gallio应该正确地检测和使用4.0.30319框架。