2017-06-06 239 views
17

Microsoft just announced实体框架Core 2.0现在将运行在.NET Standard 2.0上。.NET 4.6.1上的Entity Framework Core 2.0

.Net Standard 2.0与.NET Framework 4.6.1兼容(如果这是正确的话)。

然而,当我尝试添加latest NuGet package我得到一个错误,告诉我,我使用了错误的版本:

Install-Package : Could not install package 
'Microsoft.EntityFrameworkCore.SqlServer 2.0.0-preview2-25332'. You are 
trying to install this package into a project that targets 
'.NETFramework,Version=v4.6.1', but 
the package does not contain any assembly references or content files 
that are compatible with that framework. 

如果根据公告,我可以使用EF核心2.0和.NET框架4.6。 1,请有人解释一下,如果可能的话,举一个例子,看看会是什么样子。

+0

建议你在这里报告的一个问题:https://github.com/aspnet/EntityFramework/issues – ErikEJ

回答

3

看来,为了在.NET 4.6.1项目中包含.NET Standard 2.0库,您需要包含NetStandard.Library.NetFramework NuGet包。当前版本的packages.config文件

例子:

<package id="NETStandard.Library.NETFramework" version="2.0.0-preview1-25305-02" targetFramework="net461" /> 
+1

VS 2017 15.5预览3或更高版本为你自动“自动” – ErikEJ

+1

这个软件包已被弃用,赞成使用Nuget 3.6+ –

1

除了安装NETStandard.Library.NETFramework包,你可能还需要告诉年长的NuGet客户,这确实是通过添加以下到您的兼容*.csproj文件。

<PropertyGroup> 
    <PackageTargetFallback>netstandard2.0</PackageTargetFallback> 
</PropertyGroup> 
0

通过包管理器控制台运行Update-Package,这将神奇地更新所有的数据包包括.Net核心,默认情况下会阻止你通过的NuGet更新它们,因为它需要磊2.0的目标,而你的目标4.6 .1即使它应该是兼容的。

如果你这样做,项目将会完美地工作,并希望尽快更新将直接通过nuget,因为他们的意图是可行的。

1

去你的.csproj和改变你的TargetFramework

<PropertyGroup> 
    <PackageTargetFallback>netstandard2.0</PackageTargetFallback> 
</PropertyGroup> 

<PropertyGroup> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    </PropertyGroup>