NUnit没有运行Visual Studio 2010代码。

98

我试图将Visual Studio 2010 beta的dll加载到NUnit GUI中,但弹出了一个错误提示框。

此程序集是由比当前加载的运行时更新的运行时构建的,因此无法加载。您可能正在尝试加载使用比NUnit当前运行的CLR版本更高版本的CLR构建的程序集。

如何强制可执行文件在.NET 4下运行?


这个问题实际上与VS 2010或.NET 4代码有关吗?--我正在寻找一种工具,可以让我在Visual Studio 2010上运行NUNIT测试,而这个问题是误导性的。 - Nicolas De Irisarri
@Nicolas - 这是指 .NET 4.0。 - Daniel A. White
10个回答

132

我已经下载了NUnit 2.5源代码,并在VS2010 beta中打开了VS2008解决方案。一旦转换完成,我打开了所有的项目,并将所有项目的目标框架设置更改为“.NET Framework 4.0”。然后我成功构建了解决方案,没有出现任何错误。现在我可以使用NUnit GUI应用程序来运行为.NET 4.0构建的测试。我没有对此版本进行全面测试,因此可能会有问题,但对于我的目的而言,它可以正常工作。

更新:无需重新构建NUnit。我发现如果你在相关的NUnit配置文件中添加以下内容,就可以运行为.NET 4.0构建的测试dll。

在<configuration>下添加:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

并在 <runtime> 下添加:

<loadFromRemoteSources enabled="true" />

3
配置更新使其运行,但我必须在 requiredRuntime 标签中使用 version="v4.0.21006"。 - mkmurray
4
顺便提一句,配置文件的默认位置是: C:\Program Files\NUnit 2.5.3\bin\net-2.0\nunit.exe.config将这些选项加入配置文件对我有效。 - Brad Irby
2
无法将其与最新的Nunit + .net4 RTM一起使用。 我已将建议的条目添加到nunit-console.exe.config,但是我收到以下消息:System.ArgumentException:未找到net-4.0框架尝试使用以上版本+v4.0.30319我正在运行2008 R2 x64 - Andreas Öhlund
1
对于控制台运行程序,请按照所述更改配置,但使用.NET 4.0的RTM版本的v4.0.30319。此外,请使用以下命令行参数运行它:/framework=4.0.30319。 - Lance Fisher
1
我运用命令行选项/framework:net-4.0.30319取得了好运,而不是改变配置文件。这对我控制哪些应用程序使用4.0 CLR非常有帮助。 - Kevin Crowell
显示剩余5条评论

25

随着.NET 4的发布,我使用了

<supportedRuntime version="v4.0.30319" />

在 NUnit 2.5.4 的 exe.config 文件中,将 requiredRuntime 更改为如上所示的 loadFromRemoteResources 标签,一切都运行良好。谢谢!


17

你不需要修改任何文件

只需打开此文件,一切都会正常工作

C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-x86.exe


谢谢 - 已解决我的问题。必须使用适用于编译x86的单元测试的x86版本nunit。CLR版本警告是一个误导。使用nunit 2.5.10。 - Nigel Touch
同样的问题,不知何故必须使用x86版本。 - gavin

12
NUnit 2.5.5 中,您可以在命令行中指定选项 /framework=net-4.0,它与发布最新的 VS2010 生成的新程序集兼容。

3
我从未能让这个工作。我看到别人使用/framework:net-4.0.30319和各种变化。如果网站文档包括实际选项就更好了。 - Jason Short
2
@Jason 看起来这只适用于控制台版本。GUI 版本没有此选项。 - Roman Starkov
在此声明,这个版本从2.5.5开始有效!我曾经遇到NUnit在我的某台机器上抛出ArgumentExceptions和NullReferenceExceptions的问题,后来发现是因为使用的是2.5.0版本引起的。 - realMarkusSchmidt

2
提议的解决方法对于运行NUnit非常有效。不幸的是,当我进行代码覆盖率步骤时,NCover开始出现以下错误信息:
“Profiled process terminated. Profiler connection not established.”
我发现的最佳解决方案是使用NCover的“-x86”版本和NUnit一起使用:
“NCover.Console.exe nunit-console-x86.exe --additional params--”
现在可以正常工作了。

1
谢谢你,我也遇到了同样的问题,你的修复方法解决了它! - CubanX

2

如果您想查找Visual [C# 2010 Express或其他版本]中的.NET 4版本,请转到菜单中的“帮助”项下的Visual应用程序的“关于”选项。在窗口右上方的Microsoft .NET Framework行下,它应该显示为版本。


1

从 NUnit 2.5.10 开始,您可以在 GUI 运行器中启用 Visual Studio 支持:

工具-> 设置-> IDE 支持

之后,我成功地附加到 nunit-agent.exe 进程,该进程在 .NET 4.0 应用程序域中运行您的程序集。


1

我在运行 NUnit 2.4.8 时遇到了同样的错误信息。由于我已经有一段时间没有升级了,所以我安装了当前的 NUnit(v2.5.9),发现它现在支持 VS2010 程序集。因此,如果你最近遇到了这个错误,请检查你的 NUnit 版本:自 2010 年 12 月左右以来,唯一需要做的就是升级 NUnit。


我正在运行于2011年3月15日下载的NUnit 2.5.9版本,但这个问题对我来说始终无法解决。即使我尝试了提出的解决方案。 - DrLazer

0

我发现从 NUnit 应用程序 模板 开始很有用。它支持 VS C# Express,允许调试测试,并包含预编译的 .NET 4.0 NUnit。感谢作者,新的测试项目只需一键即可准备好。


0
如果您在升级到nunit 2.5.5后遇到此问题,则需要将nant升级到最新版本,对我来说是.91 alpha。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接