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

概述

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

升级条件:

  • Windows 操作系统

  • .NET 6 SDK

  • Visual Studio 2022 17.0 或更高版本

环境准备

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

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

85d9eb5ae166ea2a76fc550c16015c94.png

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

753bcc0fc037a452bf1072a58b3e8e91.png

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

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

cee0ba51549302a7d713557f7bc651f6.png

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

20c774a00e196e21ca3f28c5ac1ab8f9.png


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

5f6f9f1974ea589cda52dab99c3b4f7b.png

.NET Portability Analyzer安装和使用

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

e76ff9445d40d9ae96e65149fa8b47b3.png

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

362fb8aed92fac1c18887d4679eaaba4.png

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

升级助手介绍和安装

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

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

dotnet tool install -g upgrade-assistant

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

0da27bba99af77d354a1f59ac4fad727.png

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

dotnet tool update -g upgrade-assistant

项目升级

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

dc16c77df0c61a07f9e465ce5146bcfe.png

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

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

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

ff6f132add70c83e1d7ff6b69a640ef3.png

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

60e6db234a2faec08d02f64227544aef.png

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

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

打开项目

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

154897837e2e37a2075cbdf3212c6d2f.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>

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

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

a5425680f596f224a91bb818ae13926a.png

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

75b329a3d4c78ad064b13a8cce79012a.png

运行项目

f70115d9ef2e6b2b1d4b9e311d21a564.gif

项目下载

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

提取码:0000

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

城市遥感动态监测管理系统

1.系统概述 随着全国各城市数字化进程的发展&#xff0c;高分辨率遥感影像和数字航空影像为“数字城市”的建设提供了丰富的数据源。近年来&#xff0c;遥感影像的空间分辨率和光谱分辨率的明显提高&#xff0c;使得高分辨率遥感影像和数字航空影像的应用得到了极大的延伸。在城…

3月第4周全球域名商TOP15:万网第四 涨幅居亚

IDC评述网&#xff08;idcps.com&#xff09;04月03日报道&#xff1a;据WebHosting.info公布的最新数据显示&#xff0c;在3月第4周&#xff0c;全球域名商域名总量十五强排行榜中&#xff0c;美国占10个席位&#xff0c;成为最大赢家。其次是中国&#xff0c;有3家域名商上榜…

node.js之npm

1 npm介绍 npm是NodeJS一起安装的包管理工具 2 常用命令 1) 安装npm npm install 2) 查看npm版本 npm -v 比如我的ubuntu 6.4.1 3 ) 升级npm npm install npm -g 4) npm安装模块,比如安装react-native 0.56版本 npm install react-native0.56.0 5) npm的全局安装…

python代码加密解密_在python中加密 – 在Javascript中解密

您的Python代码和CryptoJS代码存在许多问题&#xff1a; >您使用随机IV加密Python中的一些明文.如果要检索该明文,则需要在解密期间使用相同的IV.没有IV,明文就无法恢复.通常,IV只是前置于密文,因为它不必是秘密的.因此,您需要在解密期间读取IV,而不是生成新的IV. >您在C…

ftp服务器客户端修改密码,如何在客户端修改FTP密码

一般情况下&#xff0c;FTP空间申请后&#xff0c;用户自己都不清楚如何修改密码&#xff0c;下面给出方法如下&#xff1a;★首先&#xff0c;要确认FTP服务器端允许用户修改秘密。然后运行FlashFXP&#xff0c;在命令栏输入命令“site pswd 旧密码 新密码”如果提示信息“230…

Task.Factory.StartNew 和 Task.Run 到底有什么区别?

前言Task.Factory.StartNew 和 Task.Run 都可以创建 Task:Task.Factory.StartNew(() > { Console.WriteLine("Task.Factory.StartNew"); });Task.Run(() > { Console.WriteLine("Task.Run"); });那它们之间有什么区别呢&#xff1f;实现代码查看这 2…

mvc 职能划分_MVC架构的职责划分原则

来源&#xff1a;https://www.awaimai.com/873.html 歪麦博客最近负责一个项目&#xff0c;用了 Yii Framework 的 MVC 框架&#xff0c;刚开始自以为结构很稳健。但是随着对业务逻辑理解的深入&#xff0c;才开始意识到问题的严重。我错误地理解了 MVC 中的 Controller&…

Matlab clear, clc 和close函数

1、clear 作用:删除工作空间中的项目,释放系统内存 语法:

Highcharts数据表示(3)

Highcharts数据表示(3) 採用对象数组的形式&#xff0c;能够明白节点上每一个项目的值。可是当节点较多时&#xff0c;会造成大量的冗余代码。假设不写配置项名称&#xff0c;对象数组就能够简化二维数组。形式例如以下&#xff1a;data:[[Number|String , Number , Color , Nu…

Git撤销文件的修改(git checkout -- file)(git reset HEAD file)(git reset HEAD~)

1 撤销没有add到暂存储区文件 git checkout -- file 如果我们把文件rm了,git statu肯定会显示出来,我们怎么还原这个文件呢?还是用上面的命令 2 撤销到add到暂存储区文件 分2步 git reset HEAD file 上面命令把暂存区的拉到了工作区,但是这个时候文件依然修改了,我们还…

【Blog.Core开源】框架集成部门权限

&#xff08;Blog.Core框架功能点概述&#xff09;Blog.Core开源四年啦&#xff0c;一行行代码凝结了大家的热情和心血&#xff0c;基本功能骨架已完成&#xff0c;欢迎更多的公司和企业使用哟。真实公司留言盖楼可获得一对一技术指导&#xff1a;https://github.com/anjoy8/Bl…

[一个经典的多线程同步问题]解决方案一:关键段CS

前面提出了一个经典的多线程同步互斥问题&#xff0c;本篇将用关键段CRITICAL_SECTION来尝试解决这个问题。 本文先介绍如何使用关键段&#xff0c;然后再深层次的分析下关键段的实现机制和原理。 关键段CRITICAL_SECTION一共就四个函数&#xff0c;下面说一下这四个函数的原型…

如何设置Matlab输出到Word中图片的大小

方法一:快速型核心方法:设置Word显示比例100%,Matlab的图像大小与屏幕所见的相同;根据Word的排版要求,估计Matlab图像在Word中的大小,进而调整图像大小。具体操作:(以下操作应对图像绘制完成后进行,图像绘制中字体大小、线宽等都与排版需要一致,比如8号字体,需要故意…

服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...

一个 asp.net core 站点&#xff0c;之前运行在Linux 服务器上&#xff0c;运行一段时间后有时站点会挂掉&#xff0c;在日志中记录很多“EMFILE too many open files”的错误&#xff1a;Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -24 EMF…

python种颜色循环_Python 实现一个颜色色值转换的小工具

需求说明 公司的 UI 设计小哥&#xff0c;已经转用 Zeplin 很久了。Zeplin 的设计稿展示页面的颜色色值使用十进制的 RGB 表示的&#xff0c;在 Android 中的颜色表示大多情况下都需要十六进制的 RGB 表示。我的数学没有好到直接看到十进制就可以心算得到十六进制的结果&#x…

bugly中批量隐藏版本

App项目使用Bugly的内测分发功能进行整包的测试&#xff0c;但日积月累之后&#xff0c;版本就会特别多。而线上同时跑的版本可能不过三个左右&#xff0c;那么多版本会干扰到查看崩溃、选择版本&#xff0c;如何隐藏呢&#xff1f; 右上角&#xff0c;更多 –> 产品设置 –…

检查点(Checkpoint)过程如何处理未提交的事务

每次我讲解SQL Server之前&#xff0c;我都会先简单谈下当我们执行查询时&#xff0c;在SQL Server内部发生了什么。执行一个SELECT语句非常简单&#xff0c;但是执行DML语句更加复杂&#xff0c;因为SQL Server要修改内存中的相关页&#xff0c;并在事务日志里记录整个事务。 …

axure如何导出原件_axure导出_axure怎么导出流程图

摘要 腾兴网为您分享:axure怎么导出流程图&#xff0c;随身行&#xff0c;轻轻家教&#xff0c;钱宝宝&#xff0c;美甲帮等软件知识&#xff0c;以及winrar美化版&#xff0c;九秀直播软件&#xff0c;中医养生平台&#xff0c;酚酞瓜&#xff0c;4399dm&#xff0c;移动硬盘检…

机器学习工作坊 - 计算机视觉

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;2分钟&#xff09;活动介绍四月的 MS Learn 学堂&#xff0c;我们将进入机器学习专题。 本月三期 MS Learn 学堂&#xff0c;我们会以工作坊的形式&#xff0c;结合具体应用实例&#xff0c;带领大家实践计算机视觉、…

React Native之提示Unable to load script from assets ‘index.android.bundle

1 问题 Unable to load script from assets index.android.bundle. Make sure your bundle is packaged correctly or youre running a packager server. 2 分析 在android的assets目录下面,没有找到index.android.bundle文件 2 解决办法 1) 在app/src/main目录下新建assets…