【问题标题】:Why can't my .NET 4.5 project use a DLL compiled for .NET 4? (Both use EF 5)为什么我的 .NET 4.5 项目不能使用为 .NET 4 编译的 DLL? (两者都使用 EF 5)
【发布时间】:2012-09-24 10:39:16
【问题描述】:

我有一个由客户端应用程序和 WebApi 网站组成的应用程序。

我的客户端是针对 .NET 4 的,这样我就不必坚持让用户安装 .NET 4.5。但是,我的网站完全在我的控制之下,所以我的目标是 .NET 4.5。

有一个共享程序集,我用它来访问数据。它使用实体框架 5。

当我构建客户端应用程序时,使用的 DLL 是 4.4.xxx 版本,而当我构建 Web 应用程序时,DLL 是 5.0.xxx。

到目前为止,我已经能够毫无问题地运行客户端应用程序,并且我也能够运行 Web 应用程序,再次没有问题。

但是,我现在从头 (*) 重新创建了我的 Web 应用程序项目,但我突然无法运行它。我在第一次调用我的数据访问程序集时收到一条 YSOD,说“无法加载文件或程序集 'EntityFramework, Version=4.4.0.0 ...”。

现在,该错误的含义非常清楚 - 它找不到数据访问程序集使用的 v4.4 DLL - 但我不明白为什么我的新项目会出现问题我的旧项目有问题。据我所知,每个项目都引用了相同的 DLL。

(*) 我应该解释为什么我要重新创建我的项目。我最初在 VS 2012 RC 中创建项目,后来升级到发布版本。尽管这据说升级了我的项目,但我遇到了一些问题,并且还注意到与新创建的项目的一些差异。所以,为了安全起见 - 并希望能避免其他问题 - 我正在从头开始重新创建它。

所以,我的问题是:为什么这突然成为一个问题,我能做些什么来解决它?

【问题讨论】:

    标签: .net-4.0 asp.net-web-api visual-studio-2012 .net-4.5 entity-framework-5


    【解决方案1】:

    代码是否取决于设置为需要确切版本的程序集?如果是这样,您将需要 publisher policy 用于 EntityFramework 程序集或 bindingRedirect 用于引用应用程序(Web 项目)。

    【讨论】:

    • 男孩,我很高兴这些话是链接 :-) bindingRedirect 修复了它,谢谢。我一直在比较项目文件,没有意识到 web.config 中有类似的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多