【问题标题】:OpenCover version 4.6.519 throwing System.InvalidProgramException : Common Language Runtime detected an invalid programOpenCover 版本 4.6.519 抛出 System.InvalidProgramException:公共语言运行时检测到无效程序
【发布时间】:2016-08-13 19:30:27
【问题描述】:

环境:

C# 6

.NET 框架 4.6.1

NUnit 控制台 2.6.3


我正在运行以下命令来在我的构建上创建测试覆盖率:

"C:\Program Files (x86)\OpenCover.4.6.519\OpenCover.Console.exe" -target:"C:\Program Files (x86)\NUnit 2.6.3\bin \nunit-console.exe" -targetargs:"/nologo /noshadow .\UnitTests.nunit /xml=UnitTestResults.xml" -register -output:RawCoverageReport.xml -filter:"+[某个名称] -[一些名字]"

但是,它破坏了我在这个版本的 OpenCover 上的构建。在以前的版本中,构建不会破坏构建单元测试,但不会创建任何测试覆盖率。有什么线索吗?

System.InvalidProgramException : 公共语言运行时检测到无效程序

感谢大家的帮助!

【问题讨论】:

    标签: c# nunit opencover


    【解决方案1】:

    虽然与 OpenCover 无关,但我们在安装 .NET 4.6.1 后使用 EXSLT 库执行某些 XSL 转换时开始看到相同的异常。

    经过一些调查并重新安装 .NET 框架的递增版本后,我们开始看到安装 .NET 4.6 时出现的错误。

    根据document,一旦安装了 4.6,就会默认使用新的 JIT 编译器。这可以通过将以下条目添加到 app.config 文件来针对每个应用程序禁用。

    <configuration>
      <runtime>
        <useLegacyJit enabled="1" />
      </runtime>
    </configuration>
    

    设置了这个标志,停止了异常的发生,没有让异常再次出现。

    因此,假设您的问题具有相同的原因,您需要在运行 OpenCover 时切换到旧版 JIT 编译器。希望您可以在 OpenCover app.config 文件中设置标志。否则,您将不得不使用上面链接的文章中描述的其他方法之一来设置标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 2011-05-05
      相关资源
      最近更新 更多