在我的.Net Core 2.0项目中,使用.Net FW包而不是.Net Standard(警告NU1701)

问题描述:

我在我的.Net Core 1.0项目中使用nuget包sqlite-net-pcl,该项目没有任何问题(.Net包使用标准1.1版本)。现在,我升级这个项目到.NET 2.0的核心,突然我得到这些构建警告:在我的.Net Core 2.0项目中,使用.Net FW包而不是.Net Standard(警告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. 

显然,我对.NET核心2.0项目现在使用.NET Framework 4.6.1版本的NuGet的包,即使有.Net标准1.1版本可用。我知道使用.Net Core 2.0这是可能的,但我也知道这并不总是工作,因为兼容性的原因,所以为什么不nuget只使用。净标准1.1版本,这将实际工作,我怎样才能强迫消除警告?

它看起来像是非常特定于依赖包SQLitePCLRaw.lib.esqlite3.*的版本,它们是.NET核心/ .NET标准片的传递依赖关系SQLitePCLRaw.bundle_green/。这可能也是特定于这些软件包的1.1.5版本,因为最新版本(1.1.8)的创作方式不同,以指示支持的平台 - 1.1.5软件包不包含lib文件夹,仅包含runtimes文件夹,因此NuGet不包含依赖关系组对支持的框架感到困惑,并假定该软件包是为.NET Framework创作的。较新的版本解决这个问题的方法是在lib文件夹中为包含虚拟_._文件的受支持框架提供子文件夹。

如果你想确保你只在你的依赖关系图的包明确支持.NET标准或.NET的核心(无论你的项目目标),你可以将它添加到您的项目文件:

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

你太棒了,非常感谢你,csproj的东西解决了它:) – Snicker