EF 7 .NET Core 工具错误

EF 7 .NET Core tools error

我使用 dotnet new -t lib 命令创建了一个新的 .NET Core 项目。它是我的 EF 上下文的 class 库。这是我的 project.json:

    {
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable"
  },
  "dependencies": {},
  "frameworks": {
    "netstandard1.6": {
      "dependencies": {
        "NETStandard.Library": "1.6.0",
        "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
        "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
      }
    }
  }
}

当我使用 运行 dotnet restore 命令时,我收到了这个错误:

error: Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final supports:

如何将 EF Code First 与 netstandard1.6 一起使用?

根据 this"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 应该在 project.json 的工具部分中注册:

{
"version": "1.0.0-*",
"description": "Class Library",
"frameworks": {
  "netstandard1.6": {
   "imports": [
     "dnxcore50"
   ]
 }
},

 "dependencies": {
 "NETStandard.Library": "1.6.0",
 "Microsoft.EntityFrameworkCore": "1.0.0",
 "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0"
},
"tools": {
  "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
 }
}

此外,使用 imports 也是一个好主意,因为一些 EF Core 的依赖项仍然不支持 .NETStandard,但在你的情况下,我检查过,即使没有导入它也能工作。

关于 Johan B 的评论,其中指出 ef 工具目前不能与 class 库一起使用,它已通过使用 --startup-project 解决方法部分解决,例如:dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb,更多信息:Parameterize directories used by dotnet-ef.