我们有一个非常大的 WinForms 解决方案(38 个项目),面向 .NET 8.0 (Windows),它在 VS 17.11.6 中运行得很好,但一旦我们升级到 v17.12,我们就无法再打开大多数表单/控件在进程外表单设计器中。 (多个用户)
我们可以编译整个解决方案并运行应用程序。
我们能够打开直接从 Form 或 UserControl 派生的 Forms/Control,但是从 Form/UserControl 的子类派生的任何窗体/控件都会失败,并显示 “无法为此文件显示设计器,因为其中没有任何类”可以设计为“”或“”无法加载文件或程序集'WinRT.Runtime,版本=2.1.0.0...”(我们不是针对 WinRT。)
我做了一些挖掘,发现一个针对 .NET 8.0 (Windows) 的新 WinForms 项目与表单设计器配合得很好。 我比较了项目文件,发现我从目标平台中删除了操作系统版本控制,例如。然后我可以使用“net8.0-windows”而不是“net8.0-windows10.0.22621.0”打开表单设计器。
经过进一步的试验和错误,我发现如果该项目针对 Windows 7 或 8,设计器可以正常工作,但任何更新的版本都会失败。
还有其他人遇到过这种情况吗? 有办法解决吗? 目前,我正在回滚到 VS 17.11.6
任何帮助表示赞赏。
我在网上发现了一篇帖子,其中的错误与您的错误非常相似(无法加载文件或程序集“WinRT.Runtime,版本=2.1.0.0”),该错误在针对 net8.0-windows10.0.22621.0 时也会发生。在帖子中,该问题是由 CommunityToolkit.Mvvm 在更新后使用新的 Windows SDK 投影引起的,而应用程序仍在使用旧版本的 Windows SDK。
8.3.0 和 WinForms 抛出无法加载文件或程序集“WinRT.Runtime”·问题 #927
基于此,您的问题也可能是由于Windows SDK版本与所需版本不匹配导致的。
您可以尝试将以下内容添加到您的 .csproj 文件中:
<PropertyGroup>
<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
<WindowsSdkPackageVersion>10.0.22621.56</WindowsSdkPackageVersion>
</PropertyGroup>