Tl; dr版本: 我遇到了异常:System.IO.FileLoadException:无法加载文件或程序集'DotNetOpenAuth.AspNet,版本4.0 .0.0 ...
有点沮丧的是 msft 在新的 MVC4 项目模板中使用了如此多的静态类和方法进行身份验证。想要将所有成员资格/身份验证功能包装到一个实现接口的类中,以便我可以模拟单元测试。
经过几个晚上的挣扎,我决定从头开始,所以我删除了所有 DotNetOpenAuth* 程序集引用和 nuget package.config 引用。我同样删除了对 Micrsoft.Aspnet.WebPages.OAuth.dll 的所有引用。
重新安装包:我针对解决方案中需要 dll 引用的三个项目 运行install-package dotnetopenauth.aspnet 。
解决方案不会构建,因为我的包装器有一个包装方法:Microsoft.AspNet.WebPages.OAuth(.dll).OAuthWebSecurity.RegisteredClientData 因此我需要对此组件的引用,所以我运行install-package microsoft.aspnet.webpages .oauth针对相同的三个项目。
解决方案构建,但是当我运行引用 Microsoft.AspNet.WebPages.OAuth(.dll).OAuthWebSecurity.RegisteredClientData 的单元测试时,我得到一个运行时异常: System.IO.FileLoadException :无法加载文件或程序集 'DotNetOpenAuth.AspNet,版本4. 0 .0.0 ...
所有三个项目中对该程序集的引用都引用了 4. 1 .0.0,我的 web.config 中的 DotNetOpenAuth.AspNet assemblyIdentity 也是如此。
我正在使用 resharper 来运行测试,并且测试是 nunit 风格的。
最后,这是我在 fuslogvw 中看到的内容的粘贴。显然有些东西正在寻找 4. 0 .0.0 但我不知道该怎么做(我有几次删除了这个转储中引用的临时数据文件夹):
** * **装配活页夹日志条目(11/13/2012 @ 10:04:54 PM)** * ** * ** * ** *
操作失败。绑定结果:hr = 0x80131040。没有可用的描述。
从以下位置加载的程序集管理器:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 在可执行文件 C:\Program Files (x86)\JetBrains\ReSharper\v7.0\Bin\JetBrains.ReSharper.TaskRunner 下运行.CLR4.MSIL.exe --- 详细的错误日志如下。
=== 预绑定状态信息 === LOG: User = i7\dave LOG: DisplayName = DotNetOpenAuth.AspNet, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246 (完全指定) LOG: Appbase = file: ///C:/SVN/trunk/SoAndSo45/SoAndSo.Com.Tests.Unit/bin/Debug LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = C:\Users\dave\AppData\Local \Temp\kpsvgxtp.io4 日志:AppName = SoAndSo.Com.Tests.Unit
调用程序集:SoAndSo.Com.Tests.Unit,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null。
LOG:此绑定在默认加载上下文中开始。LOG:未找到应用程序配置文件。LOG:使用主机配置文件:LOG:使用来自 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 的机器配置文件。日志:后策略参考:DotNetOpenAuth.AspNet,版本=4.0.0.0,文化=中性,PublicKeyToken=2780ccd10d57b246 日志:GAC 查找不成功。日志:正在尝试下载新的 URL 文件:///C:/SVN/trunk/SoAndSo45/SoAndSo.Com.Tests.Unit/bin/Debug/DotNetOpenAuth.AspNet.DLL。LOG:程序集下载成功。尝试设置文件:C:\SVN\trunk\SoAndSo45\SoAndSo.Com.Tests.Unit\bin\Debug\DotNetOpenAuth.AspNet.dll LOG:进入下载缓存设置阶段。日志:程序集名称为:DotNetOpenAuth.AspNet,版本=4.1.0.0,文化=中性,PublicKeyToken=2780ccd10d57b246 警告:比较程序集名称导致不匹配: 次要版本 ERR:程序集引用与找到的程序集定义不匹配。ERR:设置失败,hr = 0x80131040。ERR:无法完成程序集的设置(hr = 0x80131040)。探测终止。
谢谢!