Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复无法加载文件或程序集';nunit.engine,版本=3.7.0.0_C#_Visual Studio_Nunit_Nunit 3.0 - Fatal编程技术网

C# 如何修复无法加载文件或程序集';nunit.engine,版本=3.7.0.0

C# 如何修复无法加载文件或程序集';nunit.engine,版本=3.7.0.0,c#,visual-studio,nunit,nunit-3.0,C#,Visual Studio,Nunit,Nunit 3.0,我有一个webapplication,其中有一个单独的测试项目,使用NUnit运行单元测试。当我的测试项目尝试发现测试时,我遇到以下异常: An exception occurred while test discoverer 'NUnit3TestDiscoverer' was loading tests. Exception: Could not load file or assembly 'nunit.engine, Version=3.7.0.0, Culture=neutral, Pu

我有一个webapplication,其中有一个单独的测试项目,使用NUnit运行单元测试。当我的测试项目尝试发现测试时,我遇到以下异常:

An exception occurred while test discoverer 'NUnit3TestDiscoverer' was loading tests. Exception: Could not load file or assembly 'nunit.engine, Version=3.7.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb' or one of its dependencies. The system cannot find the file specified.
这当然是一个非常常见的错误,但我在任何地方都找不到对这个特定程序集的引用,也找不到导致这个问题的其他依赖项。另一件事是,我目前安装了NUnit的
3.9.0
,而不是前面提到的
3.7.0

我已经尝试过清理和重建解决方案,恢复了所有Nuget软件包,清除
obj
目录也没有任何帮助。

似乎在项目文件中您提到了3.7.0作为GAC的参考,而这个dll在GAC中是不可用的,这很可能是导致失败的原因。

最新版本的Visual Studio经常出现这种情况。我们不确定原因,但原因是VisualStudio缓存中的测试适配器副本不完整。修复方法是删除缓存副本并重新启动Visual Studio

要删除的文件夹是
C:\Users\username\AppData\Local\Temp\VisualStudioTestExplorerExtensions\NUnit3TestAdapter.3.x
,具体取决于您的用户名和版本

请参见和

在我的案例中,它是

调用执行器的时发生异常executor://nunit3testexecutor/“:无法加载文件或程序集”nunit.engine,版本=3.9.0.0

问题是:在我的测试项目中,我导入了NUnit3TestAdapter.3.13.0

  <Import Project="..\..\..\packages\NUnit3TestAdapter.3.13.0\build\net35\NUnit3TestAdapter.props" Condition="Exists('..\..\..\packages\NUnit3TestAdapter.3.13.0\build\net35\NUnit3TestAdapter.props')" />

因此,解决方案是将另一个项目中的Nunit.Engine降级为3.9版本。

Nice,谢谢。当没有对特定.dll的显式引用时,为什么会出现此问题?VSTest系统尝试加载引擎,但由于缓存已损坏,因此找不到引擎。这是在您的项目之外发生的,因此这不是一个参考问题。另外,请随意删除整个缓存文件夹,它仍将重新创建自己:c:\users\username\appdata\local\temp\VisualStudioTestExplorerex。如果其中一个已损坏,则其他的可能也已损坏。在我的情况下,我只有
3.9.0
文件夹,而不是
NUnit3TestAdapter.3.9.0
。但是,删除后也可以正常工作。无VisualStudioTestExplorerExtensions文件夹VS2019 16.7.3这适用于使用Visual Studio和Nuget for NUnit的开发人员:解决方案中通常有许多不同的Nuget库,例如NUnit、NUnit.Consolerunner、NUnit.Extension.NUnitProjectLoader、,NUnit.Extension.TeamCityEventListener和nunitestadapter3。这当然取决于你对NUnit的使用。例如,转到Visual Studio中解决方案资源管理器中的“解决方案”节点,然后转到管理Nuget软件包。然后查看“合并”,了解版本冲突。
\packages\NUnit3TestAdapter.3.13.0\build\net35