从 .NET 6 更新到 .NET 7

Upgrade from .NET 6 to .NET 7

Intro

.NET 7 已经发布了一段时间了,将几个服务升级到了 .NET 7,升级还是比较顺利的,也有遇到几个问题,分享一下

TargetFramework

首先我们需要将项目文件中的目标框架(TargetFramework)从 .NET 6 更新到 .NET 7,

092b3150f9f07379093ec31c2af89467.png

如果是类库项目可以考虑增加 .NET 7 的目标框架

升级之后有一些 .NET 框架相关的 NuGet 包也可以升级更新到 7.0.0

493f63f6086891f9609f127faad407a2.png

NuGet Packages

如果项目里有用到 global.json 也要注意更新一下 SDK 的版本

4061e7c4d359364b03cac2bf7bf6b033.png

Global json

CI update

CI 配置也需要更新到 .NET 7 或者增加 .NET 7 的环境,我个人平时使用的比较多的是 Github Actions 和 Azure DevOps 的 Pipeline,这里以这两种为例

Github Actions 更新示例:

191fb4944ebb95924880d205fc361cd2.png

如果要配置多个版本的 SDK 也可以配置一次就可以,可以在一个 step 里配置多个 version,示例如下:

093b4d3f00acdfbad80adb2e97b241ea.png

Azure pipeline CI 更新示例:

eef5d8a23af0de74dc5b38d339856a8c.png

Azure Pipeline

这里的示例是增加了 .NET 7 的 SDK,如果 .NET 6 的环境不再需要也可以直接把 .NET 6 SDK 的配置去掉

0ffb0917e3c0ba3fdc30aad4c1fd1d37.png

Dockerfile

如果项目里有打包 docker 镜像,更新了之后别忘记更新一下 Dockerfile 里的 base image

2ac32e3f9a9ef8689dfe71157f0bb16d.png

CodeSpace

如果你定制了 Github 的 CodeSpace 或者有在用 devcontainer 之类的环境,如果之前是 .NET 6 的环境别忘记更新到 .NET 7 环境,将原来 .NET 6 的镜像更新到 .NET 7

748db7dcea888c4979a99bf729fe3845.png

dotnet-monitor

有几个项目有使用到 dotnet-monitor 来作为 sidecar 来收集应用程序的状态,升级时也遇到了点问题

主要使用的 tag 没有指定,相当于使用的是 latest,拉取最新镜像的时候拉了 dotnet-monitor:7 的镜像有一些 breaking change 导致 monitor 起不来,应用也无法启动,可以参考:https://github.com/dotnet/dotnet-monitor/issues/2892

修复办法:

  1. 指定使用 dotnet-monitor:6

  2. 使用 dotnet-monitor:7  的时候需要修改启动参数

- args: [ "--no-auth" ]
+ args: [ "collect", "--urls", "http://+:52323", "--no-auth"]

More

EF 7 更新后,有些项目里的一些更新和删除操作也可以升级为 EF 7 里的批量更新和删除操作了~

在更新一个 WPF 项目时,项目里有用到 MaterialDesignThemes 想着一起升级,升级之后有一些不兼容的变化折腾了一段时间,升级第三方的类库的时候注意看一下 breaking changes 可能会少踩一些坑

References

  • https://github.com/WeihanLi/SparkTodo/commit/dc8b854f79817b9fe657d6da1f3b00752187f0f0

  • https://github.com/WeihanLi/SparkTodo/commit/87adcc02207bd5fb35f5ae5e078c998cc0a26fa7

  • https://github.com/WeihanLi/dotnet-httpie/commit/66ef609973a932dc9e419c9530658dbd884797f7

  • https://github.com/OpenReservation/ReservationServer/commit/0be1715fceceb4ebbf8c625cb9db4ee8cddd1632

  • https://github.com/night-moon-studio/NatashaPad/pull/15

  • https://github.com/dotnet/dotnet-monitor/issues/2892

  • https://github.com/dotnet/dotnet-monitor/discussions/2864

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

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

相关文章

MySQL-05:pymysql与pycharm设置

PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 Django中也可以使用PyMySQL连接MySQL数据库。 PyMySQL安装 pip install pymysql 连接数据库 前置条件: 已有一个MySQL数据库,并且…

如何将前端数据保存到文件

有时候,网页上需要提供将当前页面上的数据导出为本地文件的功能,例如将页面上的一个表格导出为csv文件。这个功能看似简单,实际上却没有什么直接的方法。由于导出文件的操作(比如浏览文件目录,创建本地文件等&#xff…

hdmi-cec_如何使用HDMI-CEC使用PlayStation 4或Pro自动打开电视

hdmi-cecCall it petty, but there’s just something about eliminating the “turn on the TV” portion of firing up your PlayStation 4 that makes the whole process seem faster. And the good news is that getting this action on your setup is as easy and ticking…

Microsoft POS for .NET v1.12 发布了

Microsoft POS for .NET v1.12是一个类库,它为你的.NET应用程序与POS设备的交互提供了一组简单统一的接口。使得供应商能够为常见的POS设备(如收银机,扫描仪等)轻松开发出通用的应用程序,您可以在此处下载.POSv1.12的更新:与 UPOS…

【APP接口开发】常用HTTP响应头状态码详解

1、200 OK,客户端请求城成功 2、400 Bad Request ,客服端请求语法错误,服务器无法理解和处理 3、401 unauthorized,请求未通过认证 4、403 permission forbidden ,无权限 5、404 URI不存在,访问的资源不存在…

leetcode——Lowest Common Ancestor of a Binary Tree

题目 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. 思路 这一次说的是一个普通的二叉树,给出两个节点。求他们的最低公共父节点。回忆一下,当这棵二叉树是二分查找树的时候的解决方式: 二分…

MySQL-06:pyMySQL增删改查基本命令笔记

增 # 导入pymysql模块 import pymysql # 连接database conn pymysql.connect(host“你的数据库地址”, user“用户名”,password“密码”,database“数据库名”,charset“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor conn.cursor() sql "INSERT INTO USER1(n…

ABP Framework 7.0 RC 新增功能简介

imageABP Framework 在架构上有四大目标:模块化、DDD、多租户和微服务。从 7.0 更新的功能来看,其侧重点转向微服务场景的实现,比如:Dapr 集成、动态权限和功能、外部本地化、分布式实体缓存服务,都是对微服务和分布式…

(原創) 07/28/1982 少女A (中森明菜)

Abstract明菜的第二首單曲,也是她的成名曲,在台灣曾經被歌手嘟嘟翻唱過。 Introduction[hjp2400,300,true]http://oomusou.googlepages.com/shojo_a.flv[/hjp2] 明菜從『少女A』這首單曲才開始竄紅,走的也是可愛路線,招牌的『明菜…

ftp服务

1.ftp工作原理FTP是一个客户机/服务系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。2.安装ftp服务yu…

Spark Streaming高级特性在NDCG计算实践

从storm到spark streaming,再到flink,流式计算得到长足发展, 依托于spark平台的spark streaming走出了一条自己的路,其借鉴了spark批处理架构,通过批处理方式实现了实时处理框架。为进一步了解spark streaming的相关内…

mac触控板 鼠标中键_如何在Windows 10中停止意外的触控板点击(以及其他鼠标增强功能)...

mac触控板 鼠标中键It’s been the bane of laptop users for years: you’re typing away, your palm brushes the trackpad, and the accidental click inserts the cursor in the middle of the text completely screwing things up. Banish the frustration of accidental …

.Net 7的AOT原理简析

楔子上节了解AOT和CLR的区别,这节来稍微深入看下AOT的原理是什么?原理其实 AOT 的原理非常简单,为啥呢?因为微软又回归了传统,搞起来Obj目标文件和Link连接器。当年的VC就是这么弄的。AOT的编译实际上是围绕这两个东西…

垂直居中及容器内图片垂直居中的CSS解决方法

方法一: <style type"text/css"> <!-- * {margin:0;padding:0} div { width:500px; height:500px; border:1px solid #666; overflow:hidden; position:relative; display:table-cell; text-align:center; vertical-align:middle } div p …

Django04: ORM配置与使用MySQL数据库

配置&#xff1a; 1.手动创建数据库。 create database testDB 2. 在Django项目的settings.py文件中&#xff0c;配置数据库连接信息&#xff1a; DATABASES {"default": {"ENGINE": "django.db.backends.mysql","NAME": "你…

推荐一款 .NET 编写的 嵌入式平台的开源仿真器

Renode 是一个开发框架&#xff0c;通过让你模拟物理硬件系统来加速物联网和嵌入式系统开发。Renode 可以模拟 Cortex-M、RISC-V 等微控制器&#xff0c;不仅可以模拟 CPU指令&#xff0c;还可以模拟外设&#xff0c;甚至可以模拟板载的外设。更强的是&#xff0c;它可以让你在…

Android Bluetooth模块学习笔记

一、蓝牙基础知识 1.蓝牙&#xff08; Bluetooth &#xff09;是一种无线技术标准&#xff0c;可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。蓝牙基于设备低成本的收发器芯片&#xff0c;传输距离近、低功耗。 2.微波频段&#xff1a;使用2.402GGHz到2.480GHz…

sql删除无人借阅的书_查找,下载,借阅,租赁和购买电子书的最佳网站

sql删除无人借阅的书So, you’ve got yourself an eBook reader, smartphone, tablet, or other portable device and you want to put some eBooks on it to take with you. There are many options for obtaining free eBooks as well as purchasing, borrowing, or even ren…

django05:ORM示例--person 增删改查

建立数据库连接后&#xff0c;演示代码 见我的资源 https://download.csdn.net/my

C#如何用正则表达式截取https和带端口的域名

如题。现有代码如下。只能截取 http://www.baidu.com的 www.baidu.com当域名为https://www.baidu.com 或者为 http://www.baidu.com:8080 时 则无法正确读取。。求高手给去能截取这样格式的代码 Thanks!string p "http://[^\.]*\.(?<domain>[^\.]*)";Regex r…