【问题标题】:Gallio Keeps Running .net 2.0 Runtime After I've switched Test To 4.0在我将测试切换到 4.0 后,Gallio 继续运行 .net 2.0 运行时
【发布时间】:2011-11-09 21:38:32
【问题描述】:

我有一组最初为 .net 2.0 构建的测试。我们使用 Gallio 和 MBunit 从控制台使用 Gallio.Echo 运行它们。 Gallio 坚持运行 2.0 CLR,然后当它看到测试是为 .net 4.0 构建的时中断。我究竟做错了什么?我可以强制 Gallio 使用 .net 4 吗?我肯定在机器上安装了 4 个。

错误信息:

开始时间:下午 4:07 初始化运行时和加载插件。 验证测试文件。 初始化测试运行器。 运行测试。 主机于 2011 年 11 月 9 日下午 4:08:00 开始。 在 CLR v2.0.50727 运行时下运行。 主机于 2011 年 11 月 9 日下午 4:08:08 停止。 主机进程以代码退出:0 运行测试时发生致命异常。可能的原因包括无效的测试运行器参数和堆栈溢出。 Gallio.Model.ModelException:调用测试驱动程序时发生异常。 ---> Gallio.Model.ModelException: Gallio.Model.ModelException: 无法从“C:\tests\mytest.dll”加载测试程序集。 ---> System.BadImageFormatException: 无法加载文件或程序集 'file:///C:\tests\mytest.dll' 或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。

【问题讨论】:

    标签: .net .net-4.0 mbunit gallio


    【解决方案1】:

    如果您在可执行文件上使用“/runtime-version”属性,您可以准确指定要加载的框架版本 - 注意,它要求该值与 \Windows\Microsoft 中的文件夹名称完全匹配.Net\Framework\ - 例如,“v4.0.30319”

    【讨论】:

    • 有没有办法在项目的 sonar-project.properties 文件中设置这个?
    【解决方案2】:

    这很可能是因为您的 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 Framework 版本。

    因此,如果您删除此&lt;startup&gt; 节点,Gallio 应该正确检测并使用 4.0.30319 框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多