我使用dotnet new -t lib
命令创建了一个新的.NET Core项目。它是我的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?
答案 0 :(得分:14)
根据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工具暂时不能用于类库,部分通过使用--startup-project
解决方法来解决,例如:dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb
,更多信息:{{3 }}