Entity Framework Core 2.0 на .NET 4.6.1

Microsoft только что анонсировано, что 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. 

Если в соответствии с объявлением я могу использовать EF Core 2.0 с .NET Framework 4.6.1, может кто-то объяснить это и, если возможно, привести пример того, как это будет выглядеть.

Ответы

Ответ 1

Кажется, что для того, чтобы включить библиотеки .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" />

Ответ 2

В дополнение к установке пакета NETStandard.Library.NETFramework вам также может потребоваться рассказать старшим клиентам NuGet, что он действительно совместим, добавив следующее в ваш файл *.csproj.

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

Ответ 3

перейдите в свой .csproj и измените свой TargetFramework

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

к нему

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

Ответ 4

Запустите Update-Package через консоль диспетчера пакетов, это каким-то волшебным образом обновит все пакеты, в том числе .Net Core, который по умолчанию не позволит вам обновлять их через Nuget, поскольку для него нужна цель NetCore 2.0, в то время как вы нацеливаете 4.6.1 даже если он должен быть совместимым.

Проект будет работать отлично, если вы сделаете это, и, надеюсь, скоро обновления будут жизнеспособными непосредственно через nuget, поскольку они должны были быть.