4

介绍

今天我更新了我的 ASP.NET MVC 应用程序,我遇到了以下错误(德语 - 抱歉):

Die Datei oder Assembly "WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35" oder eine Abhängigkeit davon wurde nicht gefunden。Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein。(Ausnahme von HRESULT:0x80131040)

(它说找不到程序集“WebGrease,版本 1.5.1.25624”)

程序集 System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 尝试加载 WebGrease 程序集但失败。

解决方案

我知道通过在 web.config 中添加绑定重定向可以轻松绕过这个问题(因为我更新了 WebGrease):

  <dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.6.5135.21930" />
  </dependentAssembly>

进一步的问题

很高兴知道为什么需要这样做以及如何创建 *.Optimization 程序集。System.Web.Optimization 1.1.3 程序集依赖于 WebGrease 1.5.2,并且“只需采用其他版本的 WebGrease”-重定向可能会导致方法调用,这些方法调用在新版本中不再存在,不是吗?

*.Optimization 的开发者是否在他们的项目中包含了对 WebGrease 1.5.2 的引用,在构建后删除了 WebGrease 程序集并创建了 NuGet 包?还是他们在代码中加载程序集?

任何关于它如何工作的解释都非常感谢。谢谢你。

4

2 回答 2

1

取自 MSDN doc关于这个问题:

您可以手动编辑应用程序配置文件以解决程序集问题。例如,如果供应商可能会发布您的应用程序使用的较新版本的程序集,但不提供发布者策略,因为他们不保证向后兼容性,您可以通过放置程序集绑定信息来指示您的应用程序使用较新版本的程序集在您应用的配置文件中。

很久以前我也遇到过同样的问题......无论如何,根据CodePlex的这个工作项,我相信这是 NuGet 包的问题。

于 2014-04-26T17:00:57.917 回答
1
  • 1) 需要覆盖程序集清单中指定的条目,该条目引用了使用正常绑定策略无法找到的程序集的违规版本。(即,探测程序集的典型位置)。
    • 1a) 可能会有重大更改,但希望对相关程序集进行某种宽容的版本控制。也许是某种语义版本控制系统。
  • 2)像 Leniel 一样,我在从 Nuget 下载程序集时遇到了这个问题。以我的经验,这是由于程序集 A 和 B 需要一个程序集,比如 C,但是当下载程序集 B 时 - 使用 Nuget - 它已经踩踏了 A 正在使用的程序集 C 的版本。既令人困惑又令人沮丧。
于 2014-04-26T17:28:50.353 回答