问题 EF 7 .NET Core工具错误


我用它创建了一个新的.NET Core项目 dotnet new -t lib 命令。它是我的EF Context的类库。这是我的 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:

如何在netstandard1.6中使用EF Code First?


13201
2017-07-14 18:41


起源

请注意,使用Enity Framework的工具不支持类库,这样做 dotnet ef 将失败。看到 docs.efproject.net/en/latest/miscellaneous/cli/... 为了解决方法。 - Johan B
@JohanB部分通过使用来解决 --startup-project 解决方法,例如: dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb, 看看这个: 参数化dotnet-ef使用的目录 - Hamid Mosalla
@HamidMosalla这是我一直在寻找的解决方案。你能用这个评论更新你的答案,所以我可以把它标记为正确答案吗? - alexxjk


答案:


根据 这个,The "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"
 }
}

使用也是个好主意 进口,因为一些EF Core的依赖项仍然不支持.NETStandard,但是在我的情况下我检查了它,即使没有导入它也可以工作。

关于Johan B的评论,其中指出ef工具暂时不能用于类库,部分通过使用来解决 --startup-project 解决方法,例如: dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb, 更多信息: 参数化dotnet-ef使用的目录。


14
2017-07-15 10:30