如何使 .NET 6.0 热重载在最简单的“Hello, World”控制台应用程序上工作?

Kon*_*zik 5 .net c# hot-reload visual-studio-2022

考虑这个 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();
}
Run Code Online (Sandbox Code Playgroud)

如果我通过调试或不进行调试来运行此程序,则将 更改WorldEarth然后保存文件并单击“热重载”(应用代码更改)按钮不会执行任何操作。程序继续写入控制台Hello, World!

我可以强制应用程序在不重新启动的情况下更改字符串,而不使用热重载,而是使用“编辑并继续”,即在应用程序处于中断模式时进行更改。

我确实启用了热重载的所有选项:

在此输入图像描述

为什么热重载不起作用?难道我做错了什么?这篇博客文章指出它也应该适用于控制台应用程序。

Joh*_*anP 6

如果更改Task.Delay(1000).Wait()await Task.Delay(1000),则保存时热重载将起作用。似乎当线程被阻塞时,热重载就不想工作。