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

3

我在我的 .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.

显然,我的.Net Core 2.0项目现在使用的是.Net Framework 4.6.1版本的nuget包,即使有.Net Standard 1.1版本可用。我知道在.Net Core 2.0中这是可能的,但我也知道由于兼容性原因,这并不总是奏效,那么为什么nuget不直接使用实际可行的.Net Standard 1.1版本,并且我如何强制执行以消除警告?
1个回答

8
看起来这与依赖包版本的 SQLitePCLRaw.lib.esqlite3.* 有很大关系,这些包是 SQLitePCLRaw.bundle_green / sqlite-net-pcl 的 .NET Core / .NET Standard 片段的传递性依赖项。这可能也特定于这些包的 1.1.5 版本,因为最新版本 (1.1.8) 的作者不同,以指示支持的平台,而 1.1.5 包不包含 lib 文件夹,只有一个 runtimes 文件夹和没有依赖组,所以 NuGet 对受支持框架感到困惑,认为该包是为 .NET Framework 编写的。新版本通过具有支持的框架的子文件夹的 lib 文件夹解决了这个问题,并包含一个虚拟的 _._ 文件。
如果您想确保依赖图中仅包含显式支持 .NET Standard 或 .NET Core(无论您的项目目标是什么)的包,可以将以下内容添加到项目文件中:
<PropertyGroup>
  <DisableImplicitAssetTargetFallback>true</DisableImplicitAssetTargetFallback>
</PropertyGroup>

你太棒了,非常感谢,csproj的事情解决了 :) - Snicker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接