此版本的Entity Framework核心软件包管理器控制台工具不支持这些类型的项目

时间:2017-03-28 11:38:00

标签: entity-framework asp.net-core entity-framework-core

使用此tutorial更新现有项目到ASP.NET Core 1.1和Entity Framework Core 1.1之后 我尝试在Package Management Console中执行“Add-Migration MigrationName”但出现错误:

  

启动项目'src \ ProjectName'是ASP.NET Core或.NET Core   Visual Studio 2015的项目。此版本的实体框架   核心软件包管理器控制台工具不支持这些类型   项目

我正在使用VS 2015 Update 3.
Project.json

{
  "dependencies": {
    "CoursesManagement.DAL": "1.0.0-*",
    "Microsoft.AspNetCore.Diagnostics": "1.1.1",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.1",
    "Microsoft.AspNetCore.Mvc": "1.1.2",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.1",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.1",
    "Microsoft.AspNetCore.StaticFiles": "1.1.1",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.1",
    "Microsoft.Extensions.Configuration.Json": "1.1.1",
    "Microsoft.Extensions.Logging.Console": "1.1.1",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.1",
    "Microsoft.NETCore.App": "1.1.1",
    "Microsoft.EntityFrameworkCore": "1.1.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.1.0",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.Design": "1.1.1"
  },

  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
      },
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "runtimes": {
    "win10-x64": {}
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

global.json

{
  "projects": [ "src" ],
  "sdk": {
    "version": "1.0.0-preview2-003131"
  }
}

3 个答案:

答案 0 :(得分:5)

根据官方ASP.NET核心团队公告(请参阅GitHub),Microsoft.EntityFrameworkCore.Tools包被分为Microsoft.EntityFrameworkCore.ToolsMicrosoft.EntityFrameworkCore.Tools.DotNet

如果要继续使用dotnet ef命令,则需要引用后一个。如果您只想使用旧的powershell样式命令(Database-UpdateAdd-Migration等),旧包应该足够了。

引用Microsoft.EntityFrameworkCore.Tools.DotNet``there is no need to also reference ``Microsoft.EntityFrameworkCore.Tools时。

Quote by Rowan Miller

  

如果您使用的是ASP.NET Core,则需要更新工具   project.json的一部分使用new   Microsoft.EntityFrameworkCore.Tools.DotNet包(而不是   Microsoft.EntityFrameworkCore.Tools包)。

"tools": {
  "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final" 
},
     

正如.NET CLI Tools的设计所具有的那样   进步,我们有必要将dotnet分开   工具进入这个单独的包。 Microsoft.EntityFrameworkCore.Tools   仍用于程序包管理器控制台命令。

现在EF Core已经发布,它当然应该是

 "tools": {
   "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0" 
 },

另请注意,这些工具不与EF本身共享版本。 Tools.DotNet的最新版本工具仍然是1.0.0(参见Nuget)和工具的1.1.0(参见Nuget again)。

答案 1 :(得分:5)

正如this博客中提到的那样,

  

我们现在鼓励大家从project.json迁移到MSBuild和csproj。如上所述,我们不会支持Visual Studio 2015中的任何新.NET Core工具。我们也不会更新基于Visual Studio 2015 project.json的工具。

您使用的EFCore.Tools包版本1.1.0不支持project.json。 project.json的工具从未到达RTM。适用于EF Core 1.1软件包的预览版本为EFCore.Tools 1.1.0-preview4-final

同样如其他答案中所述,如果您想使用powershell命令,则需要安装EFCore.Tools软件包,但如果您需要dotnet ef,则需要安装EFCore.Tools.DotNet(版本{ {1}}因为preview4-final有小问题。

如上所述,对基于project.json的工具不会有任何更新。您仍然可以使用上面的预览包,但最好的选择是尽可能迁移到VS2017 csproj。

答案 2 :(得分:1)

我相信.NET Core和EF Core中的逗号是不同的。

尝试

dotnet ef migrations add MigrationName

dotnet ef database update

Here are the dotnet cli commands