在急忙升级到EF 5.0.0.0 RC并且无法使用不会部署到Windows Azure(.NET 4.0及更低版本)的.NET 4.5项目之后,我决定降级到EF 4.3.1.0。
我不确定执行此类迁移的最佳方式,但我的策略是使用"管理NuGet包"确定哪些项目引用了包,取消选中每个项目的包,安装替换项并重新检查正确的项目。
不幸的是,在执行此操作后,我的解决方案产生了名称" FileLoadException"。
Could not load file or assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我搜索了解决方案文件,特别是packages.config,以获取对EF 5.0.0.0 RC的引用但却找不到。
答案 0 :(得分:42)
尝试在repositories.config和其他地方找到对EntityFramework的引用失败后,我偶然发现了Web.config中的引用,因为我正在编辑它以帮助我进行诊断。
bindingRedirect引用了5.0.0.0,它已不再安装,这似乎是异常的来源。老实说,我没有添加对Web.config的引用,并且在尝试在单独的项目中复制错误之后,发现NuGet包安装程序没有添加它,所以,我不知道为什么它在那里但添加了一些东西它
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
我决定用工作项目中的等效元素替换它。注意,对5.0.0.0的引用将替换为以下4.3.1.0:
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
</dependentAssembly>
这很有用!
然后我决定完整地删除EntityFramework的dependentAssembly引用。
它仍然有用!
所以,我在这里发布这个作为一个自我回答的问题,希望它能帮助别人。如果有人能向我解释:
我有兴趣学习。
答案 1 :(得分:18)
我遇到了这个问题,我所做的只是确保我在所有项目中引用了正确的.Net框架,然后从
更改web.config来自
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
到
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false"/>
一切正常......
答案 2 :(得分:5)
更新旧项目时遇到了同样的问题。以下是我为解决问题所做的工作:
使用Entity Framework 5和.NET 4的项目正在安装Entity Framework dll版本4.4。一旦我在项目中将.NET版本切换到4.5,dll版本就是5。
我的问题来自.NET 4上的旧项目和运行.NET 4.5的新项目,所以我的解决方案中有2个dll版本的EF。
希望这有助于某人...
答案 3 :(得分:3)
我在Jenkins下使用MSTEST运行单元测试时遇到了类似的问题。在我的情况下修复是删除&#34;版本= 6.0.0.0,&#34;如下图所示:
Old:
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=xxxx" requirePermission="false" />
New:
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Culture=neutral, PublicKeyToken=xxxx" requirePermission="false" />
我必须在我的多项目解决方案中进行此更改是几个App.config和Web.config文件。
答案 4 :(得分:3)
在构建项目时,如果在项目属性中显示它是在Target.NET Framework 4.5下构建的,则将其更新为4.6或4.6.1。然后,构建将能够在Web.config文件中找到Entity Framework 6.0。这种方法解决了我的问题。 Selecting Target framework from Project Properties
答案 5 :(得分:2)
如果您使用Visual Studio 2012 ASP.NET Web窗体应用程序模板,那么您将获得该引用。我假设它是你通过Nuget获得的,而不是框架System.Data.Entity引用。
答案 6 :(得分:2)
我收到了完全相同的错误消息。除了我的错误消息“无法加载文件或程序集'EntityFramework,Version = 6.0.0.0 ...”,因为我安装了EF 6.1.1。以下是我为解决问题所做的工作。
1)我点击工具&gt;启动了NuGet Manager Console。 NuGet包管理器&gt;包管理器控制台 2)通过键入以下命令卸载已安装的EntityFramework 6.1.1:
Uninstall-package EntityFramework
3)一旦我收到确认已成功卸载软件包,我通过输入以下命令安装了5.0.0版本:
Install-Package EntityFramework -version 5.0.0
问题得到解决。
答案 7 :(得分:1)
我有与硒有类似的问题: 我使用NuGet降级了我的selenium并得到了相同的错误消息。我的解决方案是从app.config文件中删除较新的版本行。
答案 8 :(得分:0)
我遇到了同样的问题。我得到了System.Data.Entity.Infrastructure;错误只是v5.0或更高版本的一部分。只需右键单击Reference并选择“Manage NuGet Package”。在“已安装的软件包”选项中,卸载已安装的“实体框架”并安装5.0版本。它解决了这个问题。我试图手动获取System.Data.Entity引用,但这并不成功。
答案 9 :(得分:0)
public Configuration()
{
AutomaticMigrationsEnabled = false;
// register mysql code generator
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}
我发现连接器6.6.4不适用于Entity Framework 5,但使用Entity Framework 4.3。因此,降级会在程序包管理器控制台中发出以下命令:
Uninstall-Package EntityFramework
Install-Package EntityFramework -Version 4.3.1
最后我再次更新数据库-Verbose,瞧!架构和表已创建。等待下一版本的连接器将其与Entity Framework 5一起使用。
答案 10 :(得分:0)
我遇到了类似的问题:
在我的ASP.NET MVC项目中,我已将Sql Server Compact数据库(sdf)添加到我的App_Data文件夹中。 VS添加了对EntityFramework.dll,版本4. *的引用。 web.config
文件已使用4. *配置进行了适当更新。
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
我在我的解决方案中添加了一个新项目(数据访问层项目)。这里我添加了一个EDMX文件。 VS添加了对EntityFramework.dll 5.0版的引用。 App.config文件已使用5.0配置
进行了适当更新 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
执行时,从数据库读取时,应用程序始终抛出异常Could not load file or assembly 'EntityFramework, Version=5.0.0.0 ...
。
通过从我的MVC项目中删除EntityFramework.dll v4.0来解决此问题。我还使用正确的5.0版本更新了web.config
文件。然后一切都按预期工作。
答案 11 :(得分:0)
在您的参考文献中,点击EntitiyFramework。 转到属性并将特定版本设置为False。 它对我有用。