Entity Framework Core 2.0在.NET 4.6.1上的应用

21
微软刚刚宣布,Entity Framework Core 2.0 现在可以在 .NET Standard 2.0 上运行。
.NET Standard 2.0 兼容(如果这里用对了术语的话) .NET Framework 4.6.1。
然而,当我尝试添加最新的 NuGet 包时,出现错误提示我使用了错误的版本:
 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. 

如果根据公告,我可以在.NET Framework 4.6.1中使用EF Core 2.0,能否有人解释一下,并且如果可能的话,给出一个示例。

建议您在此处报告问题:https://github.com/aspnet/EntityFramework/issues - ErikEJ
4个回答

7

似乎为了将.NET Standard 2.0库包含在.NET 4.6.1项目中,您需要包含NetStandard.Library.NetFramework NuGet包。

当前版本的packages.config文件示例:

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

1
Visual Studio 2017 15.5 预览版 3 或更高版本可以自动完成此操作。 - ErikEJ
2
此软件包已被弃用,建议使用Nuget 3.6+。 - Alex Wiese
@AlexWiese是正确的。我还想指出,在VS2015下使用nuget 3.6存在一个陷阱,似乎有一个bug。然而,我使用2017安装了该项目。 - petrosmm

3

除了安装 NETStandard.Library.NETFramework 包之外,您还需要在 *.csproj 文件中添加以下内容,告诉旧的 NuGet 客户端它确实是兼容的。

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

1

前往您的 .csproj 文件并更改 TargetFramework。

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

对它来说

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

0

通过包管理器控制台运行Update-Package,这将以某种神奇的方式更新所有包,包括默认情况下会阻止您通过Nuget更新它们的.Net Core,因为它需要NetCore 2.0目标,而您的目标是4.6.1,尽管它应该兼容。

如果您这样做,项目将完美地工作,希望很快更新将直接通过nuget可行,就像它们本来就应该的那样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接