1 dll .net-assembly dotnetopenauth nuget asp.net-mvc-4
Tl; dr版本: 我遇到异常:System.IO.FileLoadException:无法加载文件或程序集'DotNetOpenAuth.AspNet,版本4. 0 .0.0 ...
有点沮丧的是,msft在新的MVC4项目模板中使用了很多静态类和auth方法.想要将所有成员资格/身份验证功能包装到实现接口的类中,以便我可以模拟单元测试.
经过几个挣扎的晚上,我决定从头开始,所以我删除了所有DotNetOpenAuth*程序集引用和nuget package.config引用.我已经删除了对Micrsoft.Aspnet.WebPages.OAuth.dll的所有引用.
重新安装软件包: 我对解决方案中需要dll引用的三个项目运行install-package dotnetopenauth.aspnet.
解决方案不会构建,因为我的包装器有一个包装的方法:Microsoft.AspNet.WebPages.OAuth(.dll).OAuthWebSecurity.RegisteredClientData因此我需要对这个assy的引用,所以我运行install-package microsoft.aspnet.webpages .oauth反对同样的三个项目.
解决方案构建,但是当我运行引用Microsoft.AspNet.WebPages.OAuth(.dll).OAuthWebSecurity.RegisteredClientData的单元测试时,我得到一个运行时异常: System.IO.FileLoadException:无法加载文件或程序集'DotNetOpenAuth.AspNet,Version 4. 0 .0.0 ...
在所有三个项目,该组件中的引用参考文献4.1 .0.0,一样的DotNetOpenAuth.AspNet assemblyIdentity在我的web.config.
我正在使用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
日志:此绑定在默认加载上下文中启动.日志:找不到应用程序配置文件.日志:使用主机配置文件:日志:使用C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config中的计算机配置文件.日志:政策后参考:DotNetOpenAuth.AspNet,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 2780ccd10d57b246日志:GAC查询失败.日志:尝试下载新的URL文件:/// C:/SVN/trunk/SoAndSo45/SoAndSo.Com.Tests.Unit/bin/Debug/DotNetOpenAuth.AspNet.DLL.日志:程序集下载成功.尝试设置文件:C:\ SVN\trunk\SoAndSo45\SoAndSo.Com.Tests.Unit\bin\Debug\DotNetOpenAuth.AspNet.dll日志:进入下载缓存设置阶段.日志:程序集名称为:DotNetOpenAuth.AspNet,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = 2780ccd10d57b246 WRN:比较程序集名称导致不匹配:次要版本错误:程序集引用与找到的程序集定义不匹配.错误:安装失败,hr = 0x80131040.错误:无法完成程序集的设置(hr = 0x80131040).探测终止.
谢谢!
我认为您应该能够将这些作为NuGet包安装到您的单元测试项目中,并且如果您将这些绑定重定向包含到测试项目的app.config文件中,则可以使用它们:
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
如果您有一个新的MVC项目并Update-Package
在其上运行NuGet 命令,则会自动创建这些项目.如果你没有运行它,并将NuGet包安装到你的单元测试项目中,那么你的单元测试项目将引用比你的web项目更新的程序集.我认为这会导致您看到的负载故障.您只需要确保所有程序集在您的解决方案中都有通用版本,或者所需的绑定重定向到位.事实上,我认为无论如何都需要绑定重定向,因为DotNetOpenAuth程序集已经比Microsoft.AspNet.WebPages.OAuth
程序包更新了.
归档时间: |
|
查看次数: |
11206 次 |
最近记录: |