C# 尝试在Visual Studio v15.8.4的Entity Framework v6.2.0中迁移数据库时发生异常

C# 尝试在Visual Studio v15.8.4的Entity Framework v6.2.0中迁移数据库时发生异常,c#,entity-framework,entity-framework-6,database-migration,entity-framework-migrations,C#,Entity Framework,Entity Framework 6,Database Migration,Entity Framework Migrations,我已经使用实体框架(代码优先)设置了数据库,每次尝试添加迁移或更新数据库时,我都会得到以下结果: PM>更新数据库 使用“7”参数调用“CreateInstance”时出现异常:“找不到类型为'System.Data.Entity.Migrations.Utilities.DomainDispatcher'的构造函数。” 位于D:\WTS Projects\ModelCalibration\packages\EntityFramework.6.2.0\tools\EntityFramework.

我已经使用实体框架(代码优先)设置了数据库,每次尝试添加迁移或更新数据库时,我都会得到以下结果:

PM>更新数据库
使用“7”参数调用“CreateInstance”时出现异常:“找不到类型为'System.Data.Entity.Migrations.Utilities.DomainDispatcher'的构造函数。”
位于D:\WTS Projects\ModelCalibration\packages\EntityFramework.6.2.0\tools\EntityFramework.psm1:783 char:5
+$dispatcher=$utilityAssembly.CreateInstance(
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodInvocationException
+FullyQualifiedErrorId:MissingMethodException
System.NullReferenceException:对象引用未设置为对象的实例。
位于System.Data.Entity.Migrations.MigrationsDomainCommand.WriteLine(字符串消息)
在System.Data.Entity.Migrations.UpdateDatabaseCommand.c__DisplayClass2.b__0()中
位于System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(操作命令)
对象引用未设置为对象的实例。
我已将该项目复制到另一台具有相同版本的Visual Studio、Entity Framework和Windows的计算机上,并且我能够毫无问题地迁移数据库。我还在这两台计算机上下载了示例项目,并在这台计算机上获得了相同的异常,但另一台计算机再次没有问题,因此我相信不是这与我的代码有关

我能找到的唯一解决方案是在这个线程上,解决方案是重新安装windows,而我并不那么热衷于这样做

我还尝试了其他类似SO帖子中提到的所有内容,例如,重新安装实体框架,修复Visual Studio,等等

我使用的是Enitiy Framework v6.2.0、Visual Studio v15.8.4、.NET Framework 4.6.1和Windows 10

以前有没有人见过这个问题和/或知道任何可能的解决方案


谢谢!

有时候清理和重建解决方案是有效的

好的,我找到了一个有效的解决方案,这要感谢@rho24!我还将在这里为任何有问题的人重新发布解决方案:

问题是,在我的计算机上,System.Management.Automation程序集的3.0.0.0版本加载到包管理控制台中,EntityFramework.PowerShell.Utility.dll是根据1.0.0.0版本生成的

我临时修复了将以下绑定重定向添加到
C:\Users\USERNAME\AppData\Local\Microsoft\VisualStudio\15.0\u 313c23f6\devenv.exe.config

<dependentAssembly>
    <assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
    <publisherPolicy apply="no" />
</dependentAssembly>

注意,每次更新VS时都需要应用修复程序

我能够理解这一点,因为它与这个问题是相同的
PowerShell/PowerShell\6189

我也有,但在最近的VS更新中被修复了。希望他们应用的修复对你来说也很容易


再次感谢@rho24的解决方案!:D

尝试清理它,但不幸的是没有运气这是我作为学生最成功使用的选项。另一个选项是重新创建项目,但可能有一个更简单的问题。我不再那么习惯visual studio了?@stuartd是的,这是我在.net framewor的postWhat版本中链接的一个k您在使用吗?@Zysce抱歉,我忘了包括,我使用的是4.6.1。如果启用融合日志,然后尝试添加迁移,融合日志中是否有错误?顺便问一下,您的计算机是x86还是x64?这也解决了Visual Studio 2019 Enterprise中的相同问题,但编辑的文件位于文件夹C:\Users\USERNAME\AppData\Local\Microsoft\Vis中ualStudio\16.0_454545FD97a路径第一部分的快捷方式是%LOCALAPPDATA%btw
<dependentAssembly>
    <assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
    <publisherPolicy apply="no" />
</dependentAssembly>