为什么我的.NET 4.5项目不能使用为.NET 4编译的DLL? (两者都使用EF 5)

时间:2012-09-24 10:39:17

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

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

我的客户端的东西是针对.NET 4,所以我不必坚持用户安装.NET 4.5。但是,我的网站完全由我控制,所以我的目标是.NET 4.5。

有一个共享程序集,我用它来进行数据访问。它使用Entity Framework 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中创建了该项目,然后升级到发布版本。虽然这应该升级了我的项目,但我遇到了一些问题,并且还注意到了一些与新创建项目的差异。所以,为了安全起见 - 并希望绕过其他问题 - 我正在从头开始重新创建它。

所以,我的问题:为什么这突然成为一个问题,我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:4)

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