如何使 .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

如何在 Hot Reload 上使用 Provider 维护 Flutter Global BloC 状态?

揭秘Flutter Hot Reload(基础篇)

VS 2019 16.11正式发布 | 新功能(Hot Reload 热重载)试用