实体框架“update-database”在开发环境中失败,出现错误“Microsoft.VisualStudio.Data.Tools.Package未标记为可序列化”

问题描述:

我最近从运行VS 2015,.Net 4.5.1的旧开发环境在 的Windows 8.1到一个新的环境在Windows 10上运行VS 2017,.Net 4.6.2。实体框架“update-database”在开发环境中失败,出现错误“Microsoft.VisualStudio.Data.Tools.Package未标记为可序列化”

以前我能够从包管理器控制台调用update-database -script,没有任何问题。虽然此举让我感到奇怪的错误。

有没有其他人遇到它,如果你有修复?

异常调用 “SetData的” 与 “2” 的参数(一个或多个):在装配“类型 'Microsoft.VisualStudio.Data.Tools.Package.Internal.OAProject'“Microsoft.VisualStudio.Data.Tools.Package,版本= 15.1.0.0,文化=中立,PublicKeyToken = b03f5f7f11d50a3a'未标记为可序列化。“ 在C:\工作区\项目\ XXX \主\包\ EntityFramework.6.1.3 \ TOOLS \ EntityFramework.psm1:720字符:5

+ $ domain.SetData( 'startUpProject',$ startUpProject) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:SerializationException System.NullReferenceException:未将对象引用设置为对象的实例。 at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(Project project,Int32 shellVersion) at System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(Project project) at System.Data.Entity.Migrations .MigrationsDomainCommand.GetFacade(String configurationTypeName,Boolean useContextWorkingDirectory) at System.Data.Entity.Migrations.UpdateDatabaseCommand。 <> c__DisplayClass2。 < .ctor> b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 未将对象引用设置为对象的实例。

我看到@lincolnzocateli使得这个问题提到这里https://github.com/aspnet/EntityFramework/issues/7031然后在这里https://github.com/aspnet/EntityFramework6/issues/156但解决的办法是相当模糊的。

恨回答我的问题...

的简单的解决似乎是,你需要在包装经理指定的VS 2017年启动项目

因此,而不是运行此代码

update-database 

你需要运行下面的代码

update-database -StartupProject "XXXXX" 
+0

谢谢你,一个是驾驶我ç razy! – mason81