【发布时间】:2012-11-29 17:22:15
【问题描述】:
这是我在收到此错误之前所做的:
- 已安装 EF(预发布版本,可能是 6,我不知道)
- 决定我不想要,所以卸载了它并重新安装了稳定版 (5)
- 通过 SSMS 截断了我的数据库
这是错误:
Exception calling "CreateInstanceFrom" with "8" argument(s): "Could not load file or
assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicK
eyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest
definition does not match the assembly reference. (Exception from H
RESULT: 0x80131040)"
At C:\Projects\BCATracker.Web\packages\EntityFramework.6.0.0-
alpha2\tools\EntityFramework.psm1:425 char:31
+ $domain.CreateInstanceFrom <<<< (
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation
这是我尝试过的:
- 从 bin 目录中删除所有内容,重新构建。
- 从 nuget 中移除 EF,删除 packages 目录下的文件,在 nuget 中读取 ef。
查看 proj 文件我看到了这个:
<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
可能的根本原因是什么?
【问题讨论】:
-
为什么你有 3 个版本的 EF? EF6 alpha2 (6.0.0.0)、EF5 用于 .NET Framework 4.5 (5.0.0.0) 和 EF 5 用于 .NET Framework 4 (4.4.0.0)。你想用什么版本?如果您没有任何其他包 - 手动删除对 EntityFramework.dll 的所有引用。如果您想使用 EF6,请删除对 System.Data.Entity.dll 的引用(如果有的话)。删除 packages.config (如果你有其他 nuget 包,你会破坏它们)。安装要使用的 EF 版本。 (我想知道您最终遇到的混乱是否是由于重新定位您的项目造成的......)
-
我想为 .net 4.0 定位 5,我以为我是这样,但由于我短暂地添加了 6 alpha,一切都搞砸了。 ef 4.4 需要什么 dll?
-
然后按照我上面所说的清理你的项目,但不要删除对 System.Data.Entity.dll 的引用。确保您的项目面向 .NET Framework 4。从包管理器控制台运行
Install-Updates EntityFramework或使用 GUI - 确保您没有安装 EF6。这应该会为您提供 EntityFramework.dll 4.4.0.0,它是 .NET Framework 4 的 EF5。您现在应该也可以使用 Uninstall-Package。当我想重新定位 .NET Framework 版本时 - 我总是先卸载 EF,重新定位并再次安装 EF 以确保我拥有正确的版本。 -
非常严重地陷入了同样的问题!
-
这解决了我的问题:这个问题正在发生,因为您可能在项目中使用了多个版本的实体框架包。请参考:pinfaq.com/93/…
标签: entity-framework c#-4.0 ef-code-first database-migration