【问题标题】:Difference between used assembly and referenced assembly使用的程序集和引用的程序集之间的区别
【发布时间】:2015-11-25 14:30:36
【问题描述】:

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

错误 1 ​​程序集 'MyProject,版本 = 1.0.0.0, Culture=neutral, PublicKeyToken=null' 使用'System.Web.Http, 版本=5.2.3.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 它的版本比引用的程序集 'System.Web.Http, 版本=4.0.0.0,文化=中立, PublicKeyToken=31bf3856ad364e35'

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

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

关于 SO 有很多与此类错误相关的问题/答案,但我找不到真正解释发生了什么的问题。

【问题讨论】:

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


    【解决方案1】:

    诀窍在于,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.
    

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 2010-10-18
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2013-06-13
      • 2012-07-05
      相关资源
      最近更新 更多