从 Windows 窗体 .NET Framework 迁移到 .NET
本文介绍如何使用 .NET 升级助手将Windows 窗体桌面应用升级到 .NET。 Windows 窗体仍然是仅限 Windows 的框架,尽管 .NET 是一种跨平台技术。
先决条件
- Windows 操作系统。
- 下载并提取本文中使用的演示应用。
- Visual Studio 2022 版本 17.12 或更高版本面向 .NET 9。
- 适用于 Visual Studio 的 .NET 升级助手扩展。
评估
在执行升级之前,应分析项目。 使用 .NET 升级助手对项目执行代码分析会生成可以引用的报表,以识别潜在的迁移阻止程序。
若要分析项目并生成报表,请右键单击解决方案资源管理器中的解决方案文件,然后选择“升级”。 有关执行分析的详细信息,请参阅 使用 .NET 升级助手分析项目。
迁移依赖项
如果要升级多个项目,请从没有依赖项的项目开始。 在匹配游戏示例中,MatchingGame 项目依赖于 MatchingGame.Logic 库,因此应首先升级 MatchingGame.Logic。
提示
请务必对代码进行备份,例如在源代码管理中或副本中。
使用以下步骤在 Visual Studio 中升级项目:
右键单击“解决方案资源管理器”窗口中的 MatchingGame.Logic 项目,然后选择“升级”:
将打开一个新选项卡,提示你选择要执行的升级。
选择“就地项目升级”。
接下来,选择目标框架。
根据要升级的项目类型,会显示不同的选项。 .NET Framework 和 .NET 都可以使用 .NET Standard 2.0 。 如果库不依赖于桌面技术(如Windows 窗体),这是一个不错的选择,此项目确实如此。
选择 .NET 9.0 ,然后选择“ 下一步”。
此时将显示一个树状结构,其中包含与项目相关的所有工件,例如代码文件和库。 可以升级单个生成生成工件或整个项目(这是默认设置)。 选择“升级选择”以开始升级。
升级完成后,将显示结果:
具有实心绿色圆圈的生成工件已升级,而具有空绿色圆圈的生成工件则被跳过。 跳过的生成工件意味着升级助手没有找到任何可以升级的内容。
现在应用程序的支持库已升级,请升级主应用程序。
Visual Basic 项目说明
目前,.NET 升级助手无法识别在 .NET Framework 上的 Visual Basic 模板创建的设置文件中的用法 System.Configuration
。 它也不尊重使用 My
.NET Framework 项目中使用的扩展,例如 My.Computer
和 My.User
。 这些扩展已在 .NET 中删除。 由于这两个问题,使用 .NET 升级助手迁移后,Visual Basic 库不会编译。
若要解决此问题,项目必须面向 Windows 并引用Windows 窗体。
- 迁移完成后,双击解决方案资源管理器窗口中的 MatchingGame.Logic 项目。
- 找到
<Project>/<PropertyGroup>
元素。 - 在 XML 编辑器中,将值
<TargetFramework>
从中net9.0
更改为net9.0-windows
。 - 添加到
<UseWindowsForms>true</UseWindowsForms>
后面的<TargetFramework>
行。
项目设置应类似于以下代码片段:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<OutputType>Library</OutputType>
<MyType>Windows</MyType>
... other settings removed for brevity ...
迁移主项目
升级所有支持库后,即可升级主应用项目。 对于示例应用程序,只有一个库项目需要升级,该项目已在上一部分中升级。
- 右键单击“解决方案资源管理器”窗口中的 MatchingGame 项目,然后选择“升级”:
- 选择“就地项目升级”。
- 选择目标框架的 .NET 9.0,然后选择“下一步”。
- 保留选中所有项目,然后选择“升级选择”。
升级完成后,将显示结果。 请注意 Windows 窗体项目为何具有警告符号。 展开该项并显示有关该步骤的详细信息:
请注意,项目升级组件提到默认字体已更改。 由于字体可能会影响控件布局,因此你需要检查项目中的每一个窗体和自定义控件,以确保 UI 正确排列。
生成干净的内部版本
升级主项目后,清理并编译它。
- 右键单击“解决方案资源管理器”窗口中的 MatchingGame 项目,然后选择“清理”。
- 右键单击“解决方案资源管理器”窗口中的 MatchingGame 项目,然后选择“生成”。
如果应用程序遇到任何错误,可以在“错误列表”窗口中找到这些错误,并提供修复这些错误的建议。
Windows 窗体匹配游戏示例项目现已升级到 .NET 9。
升级后体验
如果要将应用从 .NET Framework 移植到 .NET,请查看 从 .NET Framework 升级到 .NET 后的现代化文章。
相关内容
-
移植指南概述了将代码从 .NET Framework 移植到 .NET 时应考虑的事项。 项目的复杂性决定了在项目文件的初始迁移之后要做多少工作。
从 .NET Framework 升级到 .NET 后实现现代化。
自 .NET Framework 以来,.NET 的世界发生了很大的变化。 此链接提供有关在升级后如何实现应用现代化的某些信息。