如何让 .NET 6.0 Hot Reload 在最简单的 "Hello, World" 控制台应用程序上运行?
How to make .NET 6.0 Hot Reload work on the simplest "Hello, World" console application?
考虑这个 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
然后保存文件并单击“Hot Reload”(应用代码更改)按钮什么都不做。程序继续写入控制台 Hello, World!
.
我可以强制应用程序更改字符串而无需重新启动 而无需 使用热重载,而是使用 Edit and Continue,即在应用程序中断时进行更改模式。
我确实启用了热重载的所有选项:
为什么热重载不起作用?难道我做错了什么? blog post 声明它也适用于控制台应用程序。
如果您将 Task.Delay(1000).Wait()
更改为 await Task.Delay(1000)
,则保存时热重载将起作用。似乎当线程被阻塞时,热重载不想工作。
考虑这个 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
然后保存文件并单击“Hot Reload”(应用代码更改)按钮什么都不做。程序继续写入控制台 Hello, World!
.
我可以强制应用程序更改字符串而无需重新启动 而无需 使用热重载,而是使用 Edit and Continue,即在应用程序中断时进行更改模式。
我确实启用了热重载的所有选项:
为什么热重载不起作用?难道我做错了什么? blog post 声明它也适用于控制台应用程序。
如果您将 Task.Delay(1000).Wait()
更改为 await Task.Delay(1000)
,则保存时热重载将起作用。似乎当线程被阻塞时,热重载不想工作。