我使用的是 nuget 包 sqlite-net-pcl在我的 .Net Core 1.0 项目中,该项目运行没有任何问题(包中使用了 .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.
很明显,我的 .Net Core 2.0 项目现在使用的是 .Net Framework 4.6.1 版本的 nuget 包,即使有可用的 .Net Standard 1.1 版本也是如此。我知道使用 .Net Core 2.0 这是可能的,但我也知道由于兼容性原因这并不总是有效,所以为什么 nuget 不只使用实际有效的 .Net Standard 1.1 版本我怎么能强制消除警告?
最佳答案
看起来这非常特定于依赖包 SQLitePCLRaw.lib.esqlite3.*
的版本,它们是 SQLitePCLRaw 的 .NET Core/.NET Standard 切片的传递依赖项。 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>
关于c# - 在我的 .Net Core 2.0 项目中,使用 .Net FW 包代替 .Net Standard(警告 NU1701),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46630188/