3

我遇到了这个奇怪的修订不匹配错误。我所有的 NUnit 测试项目都使用 NUnit 2.5.7,但现在我将它们切换到使用 NUnit v2.5.10,我不断收到以下错误:

FileLoadException:无法加载文件或程序集'nunit.framework,版本 2.5.7...

注意:我清理,重建,仔细检查了引用,没有问题。

使用 Assembly Binder 日志查看器(见下文),在我看来,这个错误的触发器是 Spring.Testing.NUnit.dll ......鉴于Spring.Testing.Nunit 1.3.2 Nuget 页面说,这似乎很奇怪在其依赖列表中:NUnit (≥ 2.5.7)

知道我在这里缺少什么吗?提前致谢,

结核病。

装配活页夹日志条目 (02.07.2012 @ 16:06:35)

操作失败。绑定结果:hr = 0x80131040。没有可用的描述。

从以下位置加载的程序集管理器:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 在可执行文件 F:\robin\4-Development\Workspace\3rdParty\NUnit\2.5.10\nunit-agent.exe 下运行--- 详细的错误日志如下。

=== 预绑定状态信息 === LOG:User = Mth\tbourguignon LOG:DisplayName = nunit.framework,Version=2.5.7.10213,Culture=neutral,PublicKeyToken=96d09a1eb7f44a77(完全指定) LOG:Appbase = 文件: ///F:/robin/4-开发/工作区/应用程序日志:初始 PrivatePath = Rh.Robin.Common.Tests\bin\Debug;Rh.Robin.Service.Test\bin\Debug;Rh.Robin.Domain。 Unit.Test\bin\Debug;Rh.Robin.Service.Unit.Test\bin\Debug;Rh.Robin.Web.UI.MVC.Unit.Test\bin\Debug LOG: Dynamic Base = NULL LOG: Cache Base = C:\Users\tbourguignon.Mth\AppData\Local\Temp\nunit20\ShadowCopyCache\4980_634768419945070499 日志:AppName = Tests_29030132 调用程序集:Spring.Testing.NUnit,版本=1.3.2.40943,文化=中性,PublicKeyToken=65e474d141e25e07。=== LOG:此绑定在默认加载上下文中开始。LOG:未找到应用程序配置文件。LOG:使用主机配置文件:LOG:使用来自 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 的机器配置文件。LOG:后策略参考:nunit.framework,Version=2.5.7.10213,文化=中性,PublicKeyToken=96d09a1eb7f44a77 日志:GAC 查找不成功。日志:正在尝试下载新的 URL 文件:///F:/robin/4-Development/Workspace/Application/nunit.framework.DLL。日志:正在尝试下载新的 URL 文件:///F:/robin/4-Development/Workspace/Application/nunit.framework/nunit.framework.DLL。日志:正在尝试下载新的 URL 文件:///F:/robin/4-Development/Workspace/Application/Rh.Robin.Common.Tests/bin/Debug/nunit.framework.DLL。LOG:程序集下载成功。正在尝试设置文件:F:\robin\4-Development\Workspace\Application\Rh.Robin.Common.Tests\bin\Debug\nunit.framework.dll LOG:进入下载缓存设置阶段。LOG:程序集名称为:nunit.framework,版本=2.5.10.11092, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77 警告:比较程序集名称导致不匹配:修订号ERR:程序集引用与找到的程序集定义不匹配。ERR:设置失败,hr = 0x80131040。ERR:无法完成程序集的设置(hr = 0x80131040)。探测终止。

4

2 回答 2

2

您是否从引用较新的 dot 版本的 NUnit 中获得了什么?如果没有,您可以做的最简单的事情是返回并引用与 Spring 在您的代码中引用的版本匹配的旧版本的 NUnit 程序集。

另一种选择是修改 (Spring) 应用程序的配置以使用绑定重定向来获取更新版本的 NUnit 程序集。

这让我想知道 Spring 对 NUnit 程序集的引用是否Specific Version设置为 true。不过,似乎不太可能。下面是关于 .NET 如何在运行时定位和绑定程序集的参考。

于 2012-07-02T14:49:54.363 回答
0

不知何故,我设法解决了这个问题......但我仍然不知道是什么原因造成的。我对引用进行了重大清理,从我的项目中排除了所有 NUnit 引用,删除了所有 DLL 并仅重新引入了新的 DLL。我只能猜测一个 DLL 被卡在某个地方,而 Spring 正在捡起它而不是新的……虽然是疯狂的猜测 :(

于 2012-08-09T09:01:34.900 回答