3

我有一个显然不是新问题,但我似乎仍然找不到答案的问题。

我正在使用 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 出现这些错误。

如果有人能帮助我指出正确的方向,我将不胜感激!谢谢!

4

1 回答 1

2

您是否尝试过使用 /ExeConfig 将应用程序的配置文件提供给 NGEN?对于 web 应用程序,您可能需要将 web.config 复制到 app.exe.config 并传递到 web-app 目录中不存在的 app.exe 的路径。

于 2013-09-09T20:11:45.343 回答