此包不包含 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
。