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>
我正在为.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>