如何将 Windows 窗体桌面应用升级到 .NET 7

本文介绍如何将Windows 窗体桌面应用升级到 .NET 7。 尽管 Windows 窗体在 .NET 这一跨平台技术上运行,但 Windows 窗体仍然是一个仅限 Windows 的框架。 可以使用 .NET Upgrade Assistant 升级以下与 Windows 窗体相关的项目类型:

  • Windows 窗体项目
  • 控件库
  • .NET 库

还应该查看从 .NET Framework 移植到 .NET 指南中的信息。

先决条件

演示应用

本文是在升级 Windows 窗体匹配游戏示例项目的背景下编写的,可以从 .NET 示例 GitHub 存储库下载该项目。

启动升级

如果要升级多个项目,请从没有依赖项的项目开始。 在匹配游戏示例中,MatchingGame 项目依赖于 MatchingGame.Logic 库,因此应首先升级 MatchingGame.Logic

提示

请务必对代码进行备份,例如在源代码管理中或副本中。

使用以下步骤在 Visual Studio 中升级项目:

  1. 右键单击“解决方案资源管理器”窗口中的 MatchingGame.Logic 项目,然后选择“升级”:

    The .NET Upgrade Assistant's Upgrade menu item in Visual Studio.

    将打开一个新选项卡,提示你选择执行升级的方式。

  2. 选择“就地项目升级”。

  3. 接下来,选择目标框架。 根据要升级的项目类型,会显示不同的选项。 如果该库不依赖于 Windows Froms 等桌面技术并且可以由 .NET Framework 项目和 .NET 项目使用,那么 .NET Standard 2.0 是一个不错的选择。 但是,最新的 .NET 版本相对于 .NET Standard 提供了许多语言和编译器改进。

    选择 .NET 7.0,然后选择“下一步”。

    The .NET Upgrade Assistant's target framework decision tab.

  4. 此时将显示一个树状结构,其中包含与项目相关的所有工件,例如代码文件和库。 可以升级单个生成生成工件或整个项目(这是默认设置)。 选择“升级选择”以开始升级。

    升级完成后,将显示结果:

    The .NET Upgrade Assistant's upgrade results tab, showing two out of the 13 items were skipped.

    具有实心绿色圆圈的生成工件已升级,而具有空绿色圆圈的生成工件则被跳过。 跳过的生成工件意味着升级助手没有找到任何可以升级的内容。

现在应用程序的支持库已升级,请升级主应用程序。

升级应用

升级所有支持库后,即可升级主应用项目。 对于示例应用程序,只有一个库项目需要升级,该项目已在上一部分中升级。

  1. 右键单击“解决方案资源管理器”窗口中的 MatchingGame 项目,然后选择“升级”:
  2. 选择“就地项目升级”作为升级模式。
  3. 选择“.NET 7.0”作为目标框架,然后选择“下一步”。
  4. 保留选中所有项目,然后选择“升级选择”。

升级完成后,将显示结果。 请注意 Windows 窗体项目为何具有警告符号。 展开该步骤,将显示有关该步骤的更多信息:

The .NET Upgrade Assistant's upgrade results tab, showing some of the result items have warning symbols.

请注意,项目升级组件提到默认字体已更改。 由于字体可能会影响控件布局,因此需要检查项目中的每个表单和自定义控件,以确保 UI 排列正确。

生成干净的内部版本

项目升级后,清理并编译它。

  1. 右键单击“解决方案资源管理器”窗口中的 MatchingGame 项目,然后选择“清理”。
  2. 右键单击“解决方案资源管理器”窗口中的 MatchingGame 项目,然后选择“生成”。

如果应用程序遇到任何错误,可以在“错误列表”窗口中找到这些错误,并提供修复这些错误的建议。

结论

Windows 窗体匹配游戏示例项目现已升级到 .NET 7。 迁移自己的项目时,结果会有所不同。 请务必花时间查看从 .NET Framework 移植到 .NET 指南和从 .NET Framework 升级到 .NET 后的现代化一文。