11

我在我的 .Net 4.0 类库项目中使用 nuget 安装的实体框架 4.3.1。在这种情况下,当我在 PM 控制台中调用“Enable-Migrations”命令时,会收到以下异常:

使用“1”参数调用“LoadFrom”的异常:“Nelze načíst soubor nebo sestavení file:///D:\ Users\DvoracekR\Documents\Visual Studio 2010\Projects\WebCameras\packages\EntityFramework.4.3.1\到 ols\EntityFramework.PowerShell.Utility.dll nebo jeden z jejich závislých prvků. Systém nemůže nalé zt uvedený soubor。在 D:\Users\DvoracekR\Documents\Visual Studio 2010\Projects\WebCameras\packages\EntityFramework.5。0.0-rc\tools\EntityFramework.psm1:393 char:62 + $utilityAssembly = [System.Reflection.Assembly]::LoadFrom <<<< ((Join-Path $toolsPath Entity Framework.PowerShell.Utility.dll)) + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

您不能在空值表达式上调用方法。在 D:\Users\DvoracekR\Documents\Visual Studio 2010\Projects\WebCameras\packages\EntityFramework.5。0.0-rc\tools\EntityFramework.psm1:394 char:50 + $dispatcher = $utilityAssembly.CreateInstance <<<< ( + CategoryInfo : InvalidOperation: (CreateInstance:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

使用“8”参数调用“CreateInstanceFrom”的异常:“Typ System.Data.Entity.Migrations.EnableMigrationsCommand ze sestavení EntityFramework.PowerShell, Version=4.3.1.0, Culture=neutral, P ublicKeyToken=b77a5c561934e089 nelze načíst。” 在 D:\Users\DvoracekR\Documents\Visual Studio 2010\Projects\WebCameras\packages\EntityFramework.5。0.0-rc\tools\EntityFramework.psm1:418 char:31>+ $domain.CreateInstanceFrom <<<< ( + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

4

6 回答 6

25

我解决了上述问题。

  1. 我使用 NuGet 包管理器卸载了实体框架。
  2. 我手动清除了包目录中以“实体”开头的子目录。
  3. 我再次安装了 Entity Framework 4.3.1

现在迁移已正确启用。

于 2012-06-14T08:56:10.053 回答
2

我知道这是一个老问题,并且已经有一个公认的答案,但我遇到了这个问题,并认为我会分享我为解决它所做的工作。


我的解决方案是在源代码控制中,我搞砸了我的本地项目。我决定从源代码控制重新开始,所以我创建了一个新文件夹并从 SVN 签出代码。

当我这样做时,我不再能够创建迁移。我得到了上面列出的相同错误。我试过Uninstall-Package EntityFramework了,但收到了关于 EntityFramework 中缺少文件/引用的类似消息。

我回到我的旧文件夹并查看$Project\packages\EntityFramework.6.0.2\并将其与我的新文件夹进行比较。缺少几个 DLL/Xml 文件,因为它们不在源代码管理中。它们位于\tools\,\lib\net40\lib\net45\目录中。

我只是将这些文件复制到我的新项目中,关闭/重新打开 Visual Studio,并进行了重建。之后,一切正常。

于 2014-04-02T13:41:21.657 回答
1

重新安装 NuGet 包对我不起作用。起作用的是将项目从网络驱动器移动到本地驱动器。运行比较表明,除了目录之外objbin所有文件的二进制文件都是相同的。

如果我没记错的话,我最后一次尝试Update-Database是在我将项目移动到网络驱动器之前。

于 2013-02-08T15:04:10.387 回答
0

我通过向他发送项目与大学共享项目时遇到了这个问题。当他把它发回给我时,我发现当我尝试添加迁移时,返回的项目给了我这个错误。我通过使用原始项目中的文件夹覆盖返回项目中的 packages\EntityFramework.5.0.0 文件夹来解决问题。

如果我只是在自己的机器上移动项目,我不会遇到问题。

于 2013-01-20T03:39:37.697 回答
0

我对在 Visual Studio 2017 上打开的 Visual Studio 2015 中的项目有同样的问题。这是我解决它的方法:

  1. 从工具中手动删除实体框架-> NuGet 包管理器->从解决方案管理 NuGet 包
  2. 搜索实体框架
  3. 不幸的是,存在依赖关系。所以强制只删除实体框架根本不能解决问题。因此,无论依赖项是什么,请从上述步骤中手动将其删除。
  4. 最后再次安装实体框架和您可能已删除的任何依赖项。完成此操作后,我没有重新启动我的 Visual Studio,在键入 enable-migrations 后,一切正常。

为了分享我的经验,我尝试了这一步:

卸载包EntityFramework -Force

然后为每个项目安装它:

安装包EntityFramework

但对我没有用。所以我猜我必须手动卸载它,包括它的依赖项而不使用强制并再次安装它才能工作。但很高兴它做到了。

于 2017-06-11T15:37:09.940 回答
0

当在同一台物理机器上使用不同的虚拟机时,这个问题开始发生在我身上。

VMWare Fusion 默认与 OS X 共享配置文件目录,这反过来又在使用多个安装了 Visual Studio 的 VM 时产生了很多问题,实际上我安装的几乎每个应用程序都开始出现奇怪的行为。当时应该敲响警钟。

通过关闭文件夹共享解决了这个问题,这不是很明显,因为我没有选择不共享配置文件文件夹,只能添加/删除其他文件夹。

希望我的愚蠢帮助了那里的其他人:)

于 2015-07-16T11:02:15.983 回答