博客 C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6

C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6

   数栈君   发表于 2023-11-24 09:58  236  0

概述


.NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6.


升级条件:


  • Windows 操作系统

  • .NET 6 SDK

  • Visual Studio 2022 17.0 或更高版本

环境准备


①首先是VS2022下载,直接上微软官方网站,下载地址:


https://visualstudio.microsoft.com/zh-hans/downloads/

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0af199262f0c7f019e08d654e239c96e..png

下载后,在线安装就行,如果之前有vs的其它版本也不用卸载,VS可以多个版本共存,安装的时候.NET 6的运行时默认会勾选安装,如下图:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/d20df2ba116f7dd4eb7e60d8367cce99..png


②如果需要单独下载SDK和运行时,可以上微软官网,地址:


.NET SDKs downloads for Visual Studio (microsoft.com)


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/cda9fd700e78f88fbf30e2cffab36f7b..png


③安装好以后,可以在window命令窗口确认.NET 6是否安装正常,可以输入:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/5794086239124e5cee5d9cca168ca380..png



vs安装完成后,在新建项目时应该已经可以看到.NET 6的框架了


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a7423524204975220c5f00bceada2654..png


.NET Portability Analyzer安装和使用


      升级前最好先分析下你的项目依赖的类库是否支持最新的.NET平台,这里可以利用扩展工具.NET Portability Analyzer去完成(仅支持.NET 5以下版本):


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9c1ae61abf3f067015513750015bef3a..png


扩展工具下载安装完成后,重启VS。在工程或者解决方案的右键菜单中,选择:Portability Analyzer Settings。在配置页面,选择要分析的.net  版本即可。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/b16d9495247e484851ed7717a1d78318..png


设置完成后,在VS的工程或者解决方案右键菜单中,选择:Analyze Assembly Portability,然后过一会儿就会出现结果。第二个Sheet页面详细的说明了不支持的API信息。


升级助手介绍和安装


   我们之前的应用在 .NET Framework 上运行,现在想将它们移植到 .NET 6。 当然你可以选择手动移植,但是更方便的方法是利用微软提供的升级助手去完成这个操作.


首先是升级助手安装,方法很简单,在命令窗口执行:


dotnet tool install -g upgrade-assistant

安装成功后,应该如下图所示:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/6767902ae9bb5de197807d5bb94aa9ec..png


同样地,由于 .NET 升级助手是作为 .NET 工具安装的,因此运行以下命令可以轻松地更新它:


dotnet tool update -g upgrade-assistant

项目升级


 ①分析 : .NET 升级助手工具包括一种分析模式,它可以提供有关在升级开始之前可能需要进行的更改的见解。在命令窗口 运行 upgrade-assistant analyze 命令,传入正在升级的项目或解决方案的名称。如下图:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/210c5f14f5ea93635e68d18b2225069c..png


输出中有很多内部诊断信息,但某些信息非常有用。请注意,分析模式指示升级将建议项目以 net6.0-windows 目标框架名字对象 (net6.0-windows) 为目标。这是因为解决方案引用的项目是 WPF 项目,是一种仅限 Windows 的技术。控制台应用程序可能会获得直接升级到 TFM net6.0 的建议,除非它使用某些特定于 Windows 的库。


如果报告了任何错误或警告,请在开始升级前处理这些错误或警告。


②升级: 运行 upgrade-assistant upgrade 命令,传入正在升级的项目或解决方案的名称。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/efca23b276ef219cc76f2ce7a5b90a4c..png


该工具将运行并显示它将执行的步骤列表。完成每个步骤后,该工具将提供一组命令,让用户应用或跳过下一步或其他选项。按 Enter 而不选择数字会选择列表中的第一项。杰西莱一顿按键enter,完成后如下图:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4b743fd727cd25c9f0d5b7e45e8dd3dc..png


详细步骤可参考官网文档--链接地址:


https://docs.microsoft.com/zh-cn/dotnet/core/porting/upgrade-assistant-wpf-framework


打开项目


升级完成后,选择VS2022打开项目,我旧项目依赖的Caliburn.Micro版本是3.2的不支持.NET 6,它已经自动升级到最高版本,解决方法项目数如如下图:




变更项:http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4b73afb8ee254f5abd5d60d2d2854b47..png


①packages.config被迁移到项目.csproj文件;如下图


<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<OutputType>WinExe</OutputType>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UseWPF>true</UseWPF>
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.3.310801">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Caliburn.Micro" Version="4.0.173" />
</ItemGroup>
</Project>
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9a6a9e5b865355b8b868063a3018c164..png

②Caliburn.Micro:升级到最新支持.NET6的4.0版本;


③AssemblyInfo.cs:程序集版本按理在.NET6 中应该是在项目-》属性中设置,如下图:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/d3d8b45ff0d0efbec06d8ccf06d1d433..png


但是升级助手升级后没有清理多余的项,那我就手动删除下,最后如下图:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/75ed77089dac8786cd7ee14edf651066..png


运行项目


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/78138f733f77ad2874f40bc4d7614e35..gif


项目下载


链接:https://pan.baidu.com/s/1pCdAdAJ-XVG8onsZ9OCYdQ


提取码:0000



免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群