使用的装配和参考装配之间的区别

时间:2015-11-25 14:30:36

标签: asp.net .net .net-assembly

尝试启动我的asp.net应用程序时收到以下错误消息:

  

错误1程序集' MyProject,版本= 1.0.0.0,   Culture = neutral,PublicKeyToken = null'使用' System.Web.Http,   Version = 5.2.3.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'   它的版本高于引用的程序集&System; Web.Http,   版本= 4.0.0.0,文化=中立,   公钥= 31bf3856ad364e35'

这条消息是什么意思?使用过的程序集和引用的程序集之间有什么区别?

在查看System.Web.Http程序集的属性时(通过解决方案资源管理器 - >我的项目 - >参考 - > System.Web.Http),我可以看到5.2.3.0。

关于此类错误的SO有很多问题/答案,但我找不到真正解释的问题。

1 个答案:

答案 0 :(得分:0)

技巧是System.Web.Http作为Web应用程序初始化的一部分加载,早在项目引用开始之前。因此,当您的项目加载时,它会尝试将同一程序集的较新版本加载到同一个应用程序域中,从而导致错误。

您可以在web.config中使用程序集绑定重定向:

<configuration>
  <runtime>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" 
      culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </runtime>
</configuration.