2016-07-14 102 views
11

我用dotnet new -t lib命令创建了一个新的.NET Core项目。这是我的EF上下文的类库。这是我的project.jsonEF 7 .NET核心工具错误

{ 
    "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代码第一次与netstandard1.6?

+0

要注意的是使用工装Enity Framework不支持类库文件所以'dotnet ef'将会失败。有关解决方法,请参阅https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html#targeting-class-library-projects-is-not-supported。 –

+0

@JohanB它通过使用'--startup-project'解决方法部分解决,例如:'dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb',看看这个:[Parameterize directories used by dotnet-ef](https://github.com/aspnet/EntityFramework/pull/5680) –

+0

@HamidMosalla这是我一直在寻找的解决方案。你能否用这个评论更新你的答案,这样我可以把它标记为正确答案? – alexxjk

回答

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核心的依赖仍然不支持.NETStandard,但在你的情况下,我检查,即使没有进口,它也可以工作。

关于约翰·B的意见,其中规定EF工具不能与类库用于现在,它部分使用--startup-project解决办法,例如涉及:dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb,更多的信息:Parameterize directories used by dotnet-ef.