2017-10-08 3 views
1

Ich verwendete das nugget-Paket sqlite-net-pcl in meinem .Net Core 1.0-Projekt, das ohne Probleme funktionierte (.Net Die Version 1.1 wurde für das Paket verwendet. Nun, aktualisiert ich dieses Projekt Net Core 2.0 und plötzlich erhalte ich diese Warnungen bauen:In meinem .Net Core 2.0-Projekt wird .Net-FW-Paket anstelle von .Net-Standard verwendet (Warnung NU1701)

1>C:\Projects\Project.csproj : warning NU1701: Package 'SQLitePCLRaw.lib.e_sqlite3.linux 1.1.5' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project. 
1>C:\Projects\Project.csproj : warning NU1701: Package 'SQLitePCLRaw.lib.e_sqlite3.osx 1.1.5' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project. 
1>C:\Projects\Project.csproj : warning NU1701: Package 'SQLitePCLRaw.lib.e_sqlite3.v110_xp 1.1.5' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project. 

Offensichtlich meine Net Core 2.0 Projekt nun das .Net Framework 4.6.1-Version des nuget verwendet Paket, auch wenn eine .Net Standard 1.1 Version verfügbar ist. Ich weiß, dass dies mit .Net Core 2.0 möglich ist, aber ich weiß auch, dass dies aus Kompatibilitätsgründen nicht immer funktioniert, also warum nicht einfach die .Net Standard 1.1-Versionen verwenden, die tatsächlich funktionieren und wie kann ich das zwingen, die Warnungen zu beseitigen?

Antwort

4

Es scheint, dass dies sehr spezifisch für die Versionen der abhängigen Pakete SQLitePCLRaw.lib.esqlite3.* ist, die transitive Abhängigkeiten der .NET Core/.NET Standard-Slices von SQLitePCLRaw.bundle_green/sqlite-net-pcl sind. Dies ist wahrscheinlich auch spezifisch für die 1.1.5 Version dieser Pakete, da die neuesten Versionen (1.1.8) anders geschrieben sind, um unterstützte Plattformen anzuzeigen - die 1.1.5 Pakete enthalten keinen lib Ordner, nur einen runtimes Ordner und keine Abhängigkeitsgruppen, also ist NuGet verwirrt über die unterstützten Frameworks und nimmt an, dass das Paket für .NET Framework erstellt wurde. Die neueren Versionen lösen dies, indem sie einen lib Ordner mit Unterordnern für die unterstützten Frameworks haben, die eine Dummy-Datei _._ enthalten.

Wenn Sie möchten, dass Sie nur Pakete in Ihrer Abhängigkeitsgraphen haben, um sicherzustellen, dass .NET Standard oder .NET-Core explizit unterstützen (was auch immer Ihre Projektziele), können Sie diese zu Ihrer Projektdatei hinzufügen:

<PropertyGroup> 
    <DisableImplicitAssetTargetFallback>true</DisableImplicitAssetTargetFallback> 
</PropertyGroup> 
+0

Sie sind super, vielen Dank, die csproj-Sache hat es gelöst :) – Snicker

Verwandte Themen