OpenCover版本4.6.519抛出System.InvalidProgramException:公共语言运行时检测到无效程序

时间:2016-04-20 21:15:22

标签: c# nunit opencover

环境:

C#6

.NET Framework 4.6.1

NUnit Console 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:”+ [some name] - [某些名称]

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

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

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:3)

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

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

根据这个document,默认情况下会使用一个新的JIT编译器,安装时间为4.6。通过将以下条目添加到app.config文件,可以基于每个应用程序禁用此功能。

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

设置此标志后,停止发生异常,而不是重新出现异常。

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