NuGet 警告 NU5127

此包不包含 lib/或 ref/ 文件夹,因此将被视为与所有框架兼容。 由于在 net45 的生成/目录下找到了特定于框架的文件,netstandard2.0,请考虑创建以下空文件以正确缩小包的兼容性:
-lib/net45/.
-lib/netstandard2.0/.

問题

lib/使用包PackageReference的项目和ref/程序集来确定包兼容性。 因此,不带任何文件 lib/ref/ 文件的包将被视为与所有项目兼容。 但是,包含特定于一个或多个目标框架的 MSBuild 属性或目标的包仅显示与这些目标框架兼容的意向。

例如,假设包 PackageA 包含单个文件 build/net8.0/PackageA.targets。 如果此包由面向项目 net48 (.NET Framework 版本 4.8)引用,NuGet 将不会发出任何警告或错误,也不会从包中选择任何资产。 因此,不会通知包使用者该包无法正常使用其项目。

解决方案

正如警告消息所建议的那样,为列出的 TFM 创建一个名为 lib 文件夹中的空文件 _._ 。 这样,当项目与包不兼容时,NuGet 会使项目的还原 PackageReference 失败。

如果包旨在与所有目标框架兼容,但只对某些目标框架生效,请创建内容为<Project />的文件build/{PackageId}.props