web-dev-qa-db-fra.com

Entity Framework Core 2.0 sur .NET 4.6.1

Microsoft vient d'annoncer qu'Entity Framework Core 2.0 s'exécutera désormais sur .NET Standard 2.0.

.Net Standard 2.0 est compatible (si c'est le bon terme ici) avec .NET Framework 4.6.1.

Cependant, lorsque j'essaie d'ajouter le dernier package NuGet j'obtiens une erreur me disant que j'utilise la mauvaise version:

 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. 

Si, selon l'annonce, je peux utiliser EF Core 2.0 avec .NET Framework 4.6.1, quelqu'un peut-il expliquer, et si possible donner un exemple de ce à quoi cela ressemblerait.

19
user281921

Il semble que pour inclure les bibliothèques .NET Standard 2.0 dans un projet .NET 4.6.1, vous devez inclure le package NuStet ​​NetStandard.Library.NetFramework.

Exemple de version actuelle dans le fichier packages.config:

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

Outre l'installation de NETStandard.Library.NETFramework package, vous devrez peut-être également dire aux anciens clients NuGet qu'il est vraiment compatible en ajoutant ce qui suit à votre *.csproj fichier.

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

accédez à votre .csproj et modifiez votre TargetFramework

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

à elle

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>
2
Italo José

Courir Update-Package via la console du gestionnaire de packages, cela mettra à jour comme par magie tous les paquets, y compris .Net Core, ce qui, par défaut, vous empêcherait de les mettre à jour via Nuget, car il a besoin de la cible NetCore 2.0, tandis que vous ciblez 4.6.1 même s'il devrait l'être compatible.

Le projet fonctionnera parfaitement si vous faites cela et j'espère que bientôt les mises à jour seront viables directement via nuget comme elles étaient censées l'être.

0