此版本的Entity Framework核心軟件包管理器控制台工具不支持這些類型的項目

asp.net-core entity-framework entity-framework-core

使用本教程將現有項目更新到ASP.NET Core 1.1和Entity Framework Core 1.1之後
我嘗試在Package Management Console中執行“Add-Migration MigrationName”但出現錯誤:

啟動項目'src \ ProjectName'是Visual Studio 2015的ASP.NET Core或.NET Core項目。此版本的Entity Framework核心包管理器控制台工具不支持這些類型的項目。

我正在使用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"
  }
}

一般承認的答案

博客所述,

我們現在鼓勵大家從project.json遷移到MSBuild和csproj。如上所述,我們不會支持Visual Studio 2015中的任何新.NET Core工具。我們也不會更新基於Visual Studio 2015 project.json的工具。

您正在使用不支持project.json的EFCore.Tools1.1.0版。 project.json的工具從未到達RTM。適用於EF Core 1.1軟件包的預覽版本是EFCore.Tools 1.1.0-preview4-final

另外如其他答案中所述,如果你想使用powershell命令,那麼你需要安裝EFCore.Tools包,但如果你想要dotnet ef那麼你需要安裝EFCore.Tools.DotNet (版本1.1.0-preview3-final自preview4以來 - 最小的問題)。

如上所述,對基於project.json的工具不會有任何更新。您仍然可以使用上面的預覽包,但最好的選擇是盡可能遷移到VS2017 csproj。


熱門答案

根據官方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

由Rowan Miller引用

如果您使用的是ASP.NET Core,則需要更新project.json的tools部分以使用新的Microsoft.EntityFrameworkCore.Tools.DotNet包(而不是Microsoft.EntityFrameworkCore.Tools包)。

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

隨著.NET CLI Tools的設計不斷發展,我們有必要將dotnet ef工具分離到這個單獨的包中。 Microsoft.EntityFrameworkCore.Tools仍用於Package Manager控制台命令。

現在EF Core發布了它當然應該是

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

另請注意,這些工具不與EF本身共享版本。 Tools.DotNet的最新版本的工具仍然是1.0.0(參見Nuget )和工具的1.1.0( 再次參見Nuget )。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow