在.NET Core 3时代,微软将System.Windows.Forms.DataVisualization命名空间的部分源代码进行了开源,以支持WinForms应用程序的图表功能。随着.NET 5的发布,有必要将这些代码迁移到最新的.NET版本。本文将介绍如何进行这一迁移过程,以及在迁移过程中需要注意的关键点。
迁移到.NET 5的过程包括更新引用、修改项目文件以及替换已弃用的控件。以下是一些主要的迁移步骤:
在.NET Core 3.0的原始移植版本中,使用了非常旧的Beta/Preview版本的引用。在迁移到.NET 5时,需要将这些引用更新为最新的稳定版本。例如,可能需要避免使用System.Data.SqlClient,因为它可能在未来的版本中被弃用。
项目文件(CSProj)也需要根据新的.NET 5目标/平台进行修改。以下是.NET Core 3.0和.NET 5的项目文件对比:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<AssemblyName>System.Windows.Forms.DataVisualization</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CLSCompliant>false</CLSCompliant>
<NoWarn>$(NoWarn);618</NoWarn>
<DefineConstants>$(DefineConstants);WINFORMS_CONTROL</DefineConstants>
</PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFramework>net5.0-windows</TargetFramework>
<AssemblyName>System.Windows.Forms.DataVisualization</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CLSCompliant>false</CLSCompliant>
<NoWarn>$(NoWarn);618</NoWarn>
<UseWindowsForms>true</UseWindowsForms>
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
<DefineConstants>$(DefineConstants);WINFORMS_CONTROL</DefineConstants>
</PropertyGroup>
</Project>
特别需要注意的是
从.NET Core 3.1开始,一些Windows Forms控件不再可用。取而代之的是.NET Framework 2.0中引入的具有更好设计和支持的替代控件。以下是一些不再可用的控件及其推荐替代品:
了解图表控件的最佳方式是通过查看示例解决方案。通过与应用程序的交互体验,可以了解每种图表类型和每个主要功能。在修改控件参数并立即看到它如何影响控件的外观的同时,也可以获取生成的C#或Visual Basic代码,以便在应用程序中使用。