如何使 .NET 6.0 Hot Reload 在最简单的“Hello, World”控制台应用程序上工作?
Posted
技术标签:
【中文标题】如何使 .NET 6.0 Hot Reload 在最简单的“Hello, World”控制台应用程序上工作?【英文标题】:How to make .NET 6.0 Hot Reload work on the simplest "Hello, World" console application? 【发布时间】:2021-12-22 17:30:54 【问题描述】:考虑一下这个 C# 10 / .NET 6.0 / Visual Studio 2022“Hello, World”控制台应用程序:
// See https://aka.ms/new-console-template for more information
foreach (int _ in Enumerable.Range(0, 100))
Console.WriteLine("Hello, World!");
Task.Delay(1000).Wait();
如果我在调试或不调试的情况下运行该程序,将World
更改为Earth
,然后保存文件并单击“热重载”(应用代码更改)按钮不会执行任何操作。程序继续写入控制台Hello, World!
。
我可以通过使用 Edit and Continue 来强制应用程序更改字符串而无需重新启动 without 使用热重载,而不是使用 Edit and Continue,即通过在应用程序处于中断模式时进行更改。
我确实启用了热重载的所有选项:
为什么热重载不起作用?难道我做错了什么?这个blog post 声明它也应该适用于控制台应用程序。
【问题讨论】:
【参考方案1】:如果您将Task.Delay(1000).Wait()
更改为await Task.Delay(1000)
,则保存时热重载将起作用。似乎当一个线程被阻塞时,热重载就不想工作了。
【讨论】:
以上是关于如何使 .NET 6.0 Hot Reload 在最简单的“Hello, World”控制台应用程序上工作?的主要内容,如果未能解决你的问题,请参考以下文章
微软认真聆听了开源 .NET 开发社区的炮轰: 通过CLI 支持 Hot Reload 功能
为啥在全新安装后 Blazor Hot Reload 没有按预期工作?
Webpack:如何设置 webpack-dev-server 和 Hot Reload