我有一个显然不是新问题,但我似乎仍然找不到答案的问题。
我正在使用 Google 的 Analytics API for .NET,并且在尝试让程序集很好地协同工作时遇到了困难。通过 Visual Studio 2012 构建时,我没有遇到任何构建错误。但是,当我开始使用 NGen 预编译项目时,我看到很多错误的程序集引用。
我正在使用 MVC 4、Visual Studio 2012 和最新的 Google.Apis 包(截至目前为 1.5.0.1-beta)。
我在相关项目中安装的 .dll / 版本是:
DotNetOpenAuth, Version 4.0.0.11165
System.Web.Mvc, Version 4.0.0.0
System.Net.Http.Primitives, Version 4.2.13.0
log4net, Version 1.2.11.0
Google.Apis, Version 1.5.0.1-beta
以下是我在 NGen 的输出中发现的错误:
Failed to load dependency System.Net.Http.Primitives of assembly Google.Apis, Version=1.4.0.28227, Culture=neutral, PublicKeyToken=null because of the following error : The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Failed to load dependency System.Web.Mvc of assembly DotNetOpenAuth, Version=4.0.0.11165, Culture=neutral, PublicKeyToken=2780ccd10d57b246 because of the following error : The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Failed to load dependency log4net of assembly DotNetOpenAuth, Version=4.0.0.11165, Culture=neutral, PublicKeyToken=2780ccd10d57b246 because of the following error : The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
这是我在该项目的 web.config 中的内容:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
<bindingRedirect oldVersion="1.0.0.0-1.2.11.0" newVersion="1.2.11.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.13.0" newVersion="4.2.13.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
我相信其中大部分是在我使用 NuGet 安装 Google.Apis 包时构建的,但我不明白为什么程序集绑定重定向不能防止 NGen 出现这些错误。
如果有人能帮助我指出正确的方向,我将不胜感激!谢谢!