在我的.Net Core 2.0项目中,使用.Net FW软件包代替.Net Standard(警告NU1701)

Sni*_*ker 3 .net c# nuget .net-core

我在我的.Net Core 1.0项目中使用了nuget包sqlite-net-pcl,它没有任何问题(使用了.Net Standard 1.1版本的软件包).现在,我将此项目升级到.Net Core 2.0,然后我突然收到这些构建警告:

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.
Run Code Online (Sandbox Code Playgroud)

显然,我的.Net Core 2.0项目现在正在使用.Net Framework 4.6.1版本的nuget包,即使有.Net Standard 1.1版本可用.我知道使用.Net Core 2.0这是可能的,但我也知道,由于兼容性原因,这并不总是有效,所以为什么不能只使用实际可行的.Net Standard 1.1版本,我该怎么办?强制消除警告?

Mar*_*ich 8

看起来这是非常具体的相关软件包的版本SQLitePCLRaw.lib.esqlite3.*它们的.NET核心/ .NET标准切片的传递依赖SQLitePCLRaw.bundle_green/ sqlite-net-pcl.这可能也特定于1.1.5这些软件包的版本,因为最新版本(1.1.8)的编写方式不同以表示支持的平台 - 1.1.5软件包不包含lib文件夹,只包含文件runtimes夹而没有依赖关系组,因此NuGet对支持的框架感到困惑并假设该包是为.NET Framework创作的.较新的版本通过lib为包含虚拟_._文件的受支持框架提供包含子文件夹的文件夹来解决此问题.

如果您想确保在依赖关系图中只有明确支持.NET Standard或.NET Core的软件包(无论您的项目目标是什么),您可以将其添加到项目文件中:

<PropertyGroup>
  <DisableImplicitAssetTargetFallback>true</DisableImplicitAssetTargetFallback>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)