VS 2015 ASP.NET Web API(EF6)和Xamarin Enable-Migrations失败

Shi*_*mmy 18 c# entity-framework ef-migrations asp.net-web-api xamarin.forms

我正在开发一个项目,它将使用ASP.NET Web API作为数据服务,并使用Xamarin便携式应用程序作为客户端.

我正在尝试在Web应用程序中启用迁移,但是我收到以下错误:

Enable-Migrations -enableautomaticmigrations -ContextTypeName MyProject.Models.ApplicationDbContext -ProjectName MyProject -StartupProjectName MyProject.App -Verbose
Using StartUp project 'MyProject.App'.
Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 
'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=14.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable."
At C:\Users\weitz\.nuget\packages\EntityFramework\6.1.3\tools\EntityFramework.psm1:718 char:5
+     $domain.SetData('project', $project)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException

Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 
'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=14.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable."
At C:\Users\weitz\.nuget\packages\EntityFramework\6.1.3\tools\EntityFramework.psm1:719 char:5
+     $domain.SetData('contextProject', $contextProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue[T](Project project, String propertyName)
   at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory)
   at System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName)
   at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Object reference not set to an instance of an object.
**PM>**
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我已经尝试明确指定启动项目,但看起来不像enable-migrations命令对此感到高兴.

这是我刚创建的一个使用完整.NET的项目(我已经绑定了EF Core不支持的TPT/TPH模型),所以EF版本是针对.NET 4.6.1的6.1.3.

我正在使用VS Community 2015 Update 3版本14.0.25431.01.

更新

无法重现,但即使添加虚拟启动项目也会出现问题.
Cross发布此处的问题,请投票并分享您的实验.

Shi*_*mmy 1

根据这个DbContext(经过测试和工作),在 aspnetcore+ef6 项目中启用迁移的唯一方法是在外部完整的 .NET 类库中使用 impl ,并添加一个虚拟启动项目。
很糟糕但有效。