.NET 6新特性试用 | 热重载
前言
在以前的开发模式下,我们修改代码后必须重新编译、重新运行才能看到效果。
而热重载提供了这样一种特性,它允许你在项目正在运行时修改代码,并将代码更改立即应用于正在运行的应用程序上。
热重载的目的是尽可能节省编辑之间的应用重启次数,从而使你通过减少等待应用重新生成、重启、重新导航到你在应用中的上一个位置等操作的时间来提高工作效率。
在.NET 6发布之前还有个小插曲,热重载差点从dotnet CLI中被移除。具体可以看这篇文章:https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/
下面,让我们尝试使用热重载来编写和调试正在运行的代码。
Demo
假设有下列代码,每秒向控制台输出一行文本:
int i = 0;
while (true)
{Console.WriteLine("My IO " + i++);await Task.Delay(1000);
}
1.使用VS2022
使用F5启动附加了调试器的应用程序,然后修改代码,最后单击“火焰”图标(“热重载”按钮)或按 ALT+F10 应用代码更改,又可以看到效果:
2.使用dotnet CLI
在控制台窗口使用dotnet watch
启动应用程序,然后修改代码,最后只需保存文件,等待一会就可以看到效果:
可以看到,热重载并不是完全实时的。
结论
将Visual Studio 2022与.NET 6应用一起使用时,可以支持大多数应用类型的热重载。
下表显示了哪些应用程序类型在附加调试器(F5)和不附加调试器(Ctrl+F5)的情况下支持热重载,以及是否需要.NET 6才能获得最低支持(即 F5, Ctrl+F5支持始终需要.NET 6),还显示了支持该功能的Visual Studio的最低版本:
Application type | .NET 6 required (F5) | F5 | Ctrl+F5 |
---|---|---|---|
ASP.NET code behind | No | 16.11 | 17.0 |
ASP.NET Razor (Blazor Server and ASP.NET Core) | Yes | 17.0 | 17.0 |
ASP.NET Razor (Blazor WASM) | Yes | No | 17.0 |
WPF | No | 16.11 | 17.0 |
WinUI3 | No | 16.11 | No |
WinForms | No | 16.11 | 17.0 |
Console | No | 16.11 | 17.0 |
XAML .NET MAUI WinUI | Yes | 17.1 Preview 1 | No |
XAML .NET MAUI Android | Yes | 17.1 Preview 1 | No |
XAML .NET MAUI iOS | Yes | 17.1 Preview 1 | No |
XAML + Blazor .NET MAUI WinUI | Yes | 17.1 Preview 1 | No |
XAML + Blazor .NET MAUI Android | Yes | 17.1 Preview 1 | No |
XAML + Blazor .NET MAUI iOS | Yes | 17.1 Preview 1 | No |
如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“
.NET 6新特性试用 | 热重载相关推荐
- .NET 6新特性试用 | 总结:我最喜欢的5个特性
前言 不知不觉,<.NET 6新特性试用>系列文章已经写了20多篇,而今天终于要告一段落了. 如果你还没有看过,详细文章列表在这里: .NET 6新特性试用系列 在这么多特性中,我最喜欢如 ...
- .NET 6新特性试用 | 可空引用类型
前言 在查看<隐式using指令>功能时,我们在csproj中发现这样一个属性: 那么,Nullable到底是干嘛的? 可为空上下文 严格来说,这不是新特性,而是C# 8.0引入的特性之一 ...
- 5.0 新特性试用体验之 Clustered Index
作者:hzc989 原文来源: https://tidb.net/blog/69dd056c [是否原创]是 [首发渠道]TiDB 社区 [目录] 一.引言 二.基础前情回顾 三.era withou ...
- .NET 6新特性试用 | LINQ功能改进
前言 .NET6为LINQ添加了多个新API,在本文中,我们将始终使用User类逐一演示这些添加到LINQ中的内容: public class User {public string Name { g ...
- .NET 6新特性试用 | PeriodicTimer
前言 在.NET中,已经存在了5个Timer类: System.Threading.Timer System.Timers.Timer System.Web.UI.Timer System.Windo ...
- .NET 6新特性试用 | 可写JSON DOM API
前言 我们常用JSON的方式,是将类对象序列化/反序列化: var user = new User { Name = "My IO" }; var json = JsonSeria ...
- .NET 6新特性试用 | SDK工作负载
前言 为了应对.NET SDK能够支持的程序集项目(例如iOS.Android.WASM)的不断增长,从.NET 6开始,允许用户仅安装必要的SDK(例如ASP.NET Core),而不是一次性安装& ...
- .NET 6新特性试用 | ArgumentNullException卫语句
前言 在前面的文章中(<可空引用类型>),我们介绍过编译器会帮我们检查空引用,但是仅仅是警告.最好的方式还是在运行时用卫语句进行检查: private void Test(WeatherF ...
- .NET 6新特性试用 | 最小Web API
前言 如果你使用过其他一些轻量级Web框架,比如Node.JS,你就会知道,创建具有最小依赖项的HTTP API是多么简单: var express = require('express') var ...
最新文章
- java 处理 url_Java URL处理 - Java 教程 - 自强学堂
- Java主线程等待子线程、线程池
- BZOJ3522[Poi2014]Hotel——树形DP
- postman自动打开_postman---postman自动发博客
- xml文档的pull解析与SAX解析
- 计算机软件专业代码表,2019-04-09计算机软件适用国民经济行业代码表
- 计算机二级c语言作弊技巧,计算机等级考试二级C语言题型分析与应试技巧
- WinDbg 蓝屏分析 Windows Dump 文件教程
- 图解深度学习的笔记:1.MP模型,感知器,BP下的多层感知器
- 测量平差理论知识结构梳理
- python爬虫百度图片_python爬取百度图库多张图片
- 短消息类新旧服务代码对应表
- c语言课程设计作业心得体会,【c语言课程设计心得体会】 c语言课程设计报告总结...
- A/Btest:组间的差异性检验,统计功效以及反选样本量,附python底层实现代码
- 如果你喜欢上了一个程序员小伙
- 医学四视图-005-四视图加按钮
- DOM是什么?有什么用处?js与DOM啥关系?
- Pikachu漏洞练习平台----验证码绕过(on server) 的深层次理解
- 关于评审--从思想到落地
- 在Blender中使用代码控制人物模型的嘴部动作 - 嘴部张开
热门文章
- Class Diagram
- 将 iOS 应用的体积控制在 20MB 以内对于其下载量有很明显的影响吗?
- MS UC 2013-2-Deploy Microsoft Exchange Server 2013-4-Post-Installation Tasks
- 一步一步学Ruby(二十一):文件操作2
- python用for循环求10的因数_python for循环练习(初级)
- MyBatis Generator 生成器把其他数据库的同名表生成下来的问题
- PHP | Uploading and reading of files and database 【PHP | 文件的上传和读取与数据库】
- MaintainableCSS 《可维护性 CSS》 --- 模板篇
- js(jQuery)获取时间的方法及常用时间类
- centos6.4下安装jdk