在我的.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>
你太棒了,非常感谢你,csproj的东西解决了它:) – Snicker