我的项目中遇到了非常奇怪的错误。我安装了 DotnetOpenAuth.Aspnet 和 Microsoft.AspNet.WebPages.OAuth 库 nuget 包。当我运行项目时没有问题。但是当我为控制器编写测试时,它会抛出如下异常。
测试方法 MvcApplication2.Tests.ControllerTest.should_return_not_empty_content 抛出异常:
System.IO.FileLoadException: Could not load file or assembly 'DotNetOpenAuth.AspNet, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246'
or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
另一个奇怪的点是如果我在 VS 2010 中设置一个项目作为 MVC3 应用程序并且测试正在通过。没有失败。但是当我在 VS2012 中进行完全相同的设置时,它会触发与上述相同的错误。当我在 stackoverflow 上搜索时,我看到了这个解决方案 ,但它也没有工作。
您可以在以下几行中找到所有项目和示例测试。它只是一个应用程序一个测试项目。非常容易阅读。
我还在这里添加了一个示例代码,用于控制器和失败的测试。
代码预览的 pastebin 链接是http://pastebin.com/1PCpq3hW
任何帮助,将不胜感激。
Vs2010 和 2012 失败和成功的项目
详细的日志结果如下
*** 装配活页夹日志条目 (13.12.2012 @ 22:27:31) *** 操作失败。 绑定结果:hr = 0x80131040。没有可用的描述。 从以下位置加载的程序集管理器:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 在可执行文件 C:\Program Files (x86)\JetBrains\ReSharper\v7.0\Bin\JetBrains.ReSharper.TaskRunner.CLR4.exe 下运行 --- 详细的错误日志如下。 === 绑定状态信息 === 日志:用户 = DEVELOPER-PC\DEVELOPER 日志:DisplayName = DotNetOpenAuth.AspNet,版本 = 4.0.0.0,文化 = 中性,PublicKeyToken = 2780ccd10d57b246 (完全指定) 日志:Appbase = file:///D:/Development/Coachius/CoachiusWeb.Tests/bin/Debug 日志:初始 PrivatePath = NULL 日志:动态基础 = NULL 日志:缓存基础 = NULL 日志:AppName = NULL 调用程序集:CoachiusWeb,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null。 === LOG:此绑定在默认加载上下文中开始。 LOG:使用应用程序配置文件:D:\Development\Coachius\CoachiusWeb.Tests\bin\Debug\CoachiusWeb.Tests.dll.config LOG:使用主机配置文件: LOG:使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 中的机器配置文件。 日志:政策后参考:DotNetOpenAuth.AspNet,版本=4.0.0.0,文化=中性,PublicKeyToken=2780ccd10d57b246 日志:GAC 查找不成功。 日志:正在尝试下载新的 URL 文件:///D:/Development/Coachius/CoachiusWeb.Tests/bin/Debug/DotNetOpenAuth.AspNet.DLL。 LOG:程序集下载成功。尝试设置文件:D:\Development\Coachius\CoachiusWeb.Tests\bin\Debug\DotNetOpenAuth.AspNet.dll LOG:进入从源代码运行设置阶段。 日志:程序集名称为:DotNetOpenAuth.AspNet,版本=4.1.0.0,文化=中性,PublicKeyToken=2780ccd10d57b246 警告:比较程序集名称导致不匹配:次要版本 ERR:程序集引用与找到的程序集定义不匹配。 ERR:从源代码运行设置阶段失败,hr = 0x80131040。 ERR:无法完成程序集的设置(hr = 0x80131040)。探测终止。