如何顺利升级 NuGet 包的 targetFramework

How to smoothly upgrade the targetFramework for a NuGet package

我有一个当前针对 .NET 4.5 的 NuGet 包。下一个版本将改为以 .NET 4.5.2 为目标。我没有兴趣支持这两个框架版本(这些包仅在内部使用),但我确实想让消费者明白他们需要以 4.5.2 为目标。现在,似乎 NuGet 将允许 4.5 项目安装我的包,但这将是一个空操作(因为没有要为 net45 安装的 DLL)。

我的问题是,我可以做些什么来改善这种体验?理想情况下,我希望在 targetFramework 错误时安装失败。否则,我会满足于错误消息之类的东西。

为此,您需要确保包中的所有内容都针对新版本。然后,NuGet 将失败安装并显示以下消息:

Could not install package 'XXX'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author

我的问题是,即使我的 DLL 以 net452 为目标,我的 nuspec 文件中的其他元素(例如内容文件)仍然以 net45 为目标。 NuGet 将此解释为我的包是多目标的,因此允许安装在 .NET 4.5 项目中继续(静默跳过添加 DLL 引用的步骤)。