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.
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" />
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>
accédez à votre .csproj et modifiez votre TargetFramework
<PropertyGroup>
<PackageTargetFallback>netstandard2.0</PackageTargetFallback>
</PropertyGroup>
à elle
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
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.