หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
.NET Hot Reload applies code changes, including changes to stylesheets, to a running app without restarting the app and without losing app state. Hot Reload is supported for all ASP.NET Core in .NET 6 or later projects.
Generally, updated code is rerun to take effect with the following conditions:
- Some startup logic is only run once:
- Middleware, unless the code update is to an inline middleware delegate.
- Configured services.
- Route creation and configuration, unless the code update is to a route handler delegate (for example,
OnInitialized
).
- In Blazor apps, the framework triggers a Razor component render automatically.
- In MVC and Razor Pages apps, Hot Reload triggers a browser refresh automatically.
- Removing a Razor component parameter attribute doesn't cause the component to rerender. The app must be restarted.
For more information on supported scenarios, see Supported code changes (C# and Visual Basic).
Blazor WebAssembly
Blazor WebAssembly Hot Reload supports the following code changes:
- New types.
- Nested classes.
- Most changes to method bodies, such as adding, removing, and editing variables, expressions, and statements.
- Changes to the bodies of lambda expressions and local functions.
- Adding static and instance methods to existing types.
- Adding static and instance fields, events, and properties to existing types.
- Adding static lambdas to existing methods.
- Adding lambdas that capture
this
to existing methods that already capturedthis
previously.
Note that when an attribute is removed that previously set the value of a component parameter, the component is disposed and re-initialized to set the removed parameter back to its default value.
The following code changes aren't supported for Blazor WebAssembly apps:
- Adding a new
await
operator oryield
keyword expression. - Changing the names of method parameters.
Blazor WebAssembly Hot Reload supports the following code changes:
- New types.
- Nested classes.
- Most changes to method bodies, such as adding, removing, and editing variables, expressions, and statements.
- Changes to the bodies of lambda expressions and local functions.
- Adding static and instance methods to existing types.
- Adding static fields to existing types.
- Adding static lambdas to existing methods.
- Adding lambdas that capture
this
to existing methods that already capturedthis
previously.
Note that when an attribute is removed that previously set the value of a component parameter, the component is disposed and re-initialized to set the removed parameter back to its default value.
The following code changes aren't supported for Blazor WebAssembly apps:
- Adding a new
await
operator oryield
keyword expression. - Changing the names of method parameters.
- Adding instance (non-
static
) fields, events, or properties.
Blazor WebAssembly Hot Reload supports the following code changes:
- Most changes to method bodies, such as adding, removing, and editing variables, expressions, and statements.
- Changes to the bodies of lambda expressions and local functions.
The following code changes aren't supported for Blazor WebAssembly apps:
- Adding new lambdas or local functions.
- Adding a new
await
operator oryield
keyword expression. - Changing the names of method parameters.
- Changes outside of method bodies.
- Adding instance (non-
static
) fields, events, or properties.
.NET CLI
Hot Reload is activated using the dotnet watch
command:
dotnet watch
To force the app to rebuild and restart, use the keyboard combination Ctrl+R in the command shell.
When an unsupported code edit is made, called a rude edit, dotnet watch
asks you if you want to restart the app:
- Yes: Restarts the app.
- No: Doesn't restart the app and leaves the app running without the changes applied.
- Always: Restarts the app as needed when rude edits occur.
- Never: Doesn't restart the app and avoids future prompts.
To disable support for Hot Reload, pass the --no-hot-reload
option to the dotnet watch
command:
dotnet watch --no-hot-reload
Disable Hot Reload
The following setting in Properties/launchSettings.json
disables Hot Reload:
"hotReloadEnabled" : false
Additional resources
For more information, see the following resources in the Visual Studio documentation:
- YouTube video .NET 6 Hot Reload in Visual Studio 2022, VS Code, and NOTEPAD?!?
- Introducing the .NET Hot Reload experience for editing code at runtime
- Write and debug running code with Hot Reload in Visual Studio
- Updates for Blazor & Razor editors + Hot Reload for ASP.NET
- Test Execution with Hot Reload
ASP.NET Core