VS 写入对最新安装的 .NET Core SDK WinForms 程序集的引用,而不是最低版本

VS writes references to the latest installed .NET Core SDK WinForms assemblies instead of the lowest version

我正在为.NET 6 编写WinForms 控件。此项目的目标框架设置为.NET 6.0。原来我在几个月前安装的最新的VS 2022(17.1.1)编译项目时,VS总是在编译的DLL中写入对WinForms程序集v6.0.2的引用:

我可以解释一下,因为 6.0.2 是我电脑上安装的 .NET 6.0 SDK 的最新版本,但为什么其他引用的程序集(如 System.Collections 或 System.Data.Common 不会发生这种情况?

我想将已编译 DLL 中 WinForms 程序集的确切版本指定为 6.0.0,以便可以在安装任何 .NET 6 运行时(6.0.1、6.0.3、6.1.0)的情况下启动 DLL。 0 等)。我没有找到办法做到这一点。我尝试了 global.json 和 csproj 文件中的 RuntimeFrameworkVersion 键(另请参阅 this question),但这没有帮助。

有办法解决我的问题吗?

我自己找到了解决办法。问题出在 .NET SDK 6.0.2:

6.0.2 SDK update has broken WinForms apps

在这里找到了对我有帮助的解决方案:

Issue building with Windows Desktop 6.0.2

我所需要的只是将以下设置添加到 csproj 文件中:

<ItemGroup>
  <FrameworkReference
    Update="Microsoft.WindowsDesktop.App.WindowsForms"
    TargetingPackVersion="6.0.0" />
</ItemGroup>