hot reload在.net 6+中默认启用,但仅支持asp.net core、wpf、winforms、maui及.net 7+控制台项目的方法体内修改;不支持类库、发布模式、program.cs结构变更等,需通过dotnet watch或vs 2022热重载启动。

直接改代码文件就行,但改完必须重新生成或热重载才能生效,否则运行的还是旧字节码。
修改 Program.cs 或窗体类文件(如 Form1.cs)
这是最常见场景:你打开项目后直接编辑主逻辑文件。注意两点:
-
Program.cs在 .NET 6+ 是隐式Main入口,改完需确保没有语法错误(比如漏括号、错用var初始化空集合),否则生成失败 - WinForms 项目中
Form1.cs分为设计文件(Form1.Designer.cs)和逻辑文件;手动改Form1.cs中的事件处理方法没问题,但别动InitializeComponent()里自动生成的控件初始化代码,否则设计器可能冲突 - 如果改的是窗体上控件的属性(比如
TextBox.Text),记得确认该控件在设计器中已命名(如txtInput),否则编译报The name 'txtInput' does not exist in the current context
改完不生效?检查生成配置和目标框架是否匹配
常见现象是代码改了,F5 运行却没变化——大概率是生成没成功或跑错了输出目录。
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
- 确认当前生成配置是
Debug(不是Release),右下角状态栏会显示;Release下某些调试语句(如Debug.WriteLine)会被剔除 - 检查项目属性里的
Target Framework是否与你写的语法兼容:比如用了required属性修饰符,就必须是 .NET 7+;若项目设为.NET Framework 4.8,这些语法直接报错 - 生成成功后,可去
bin\Debug\netX.X\(或bin\Debug\对应 Framework 版本)下看.dll文件时间戳是否更新;没更新说明根本没生成进去
热重载改代码(仅限支持的项目类型)
如果你用的是 Visual Studio 2022 + .NET 6+ 控制台/ASP.NET Core/Blazor 项目,可以跳过重启直接应用修改。
- 必须用 F5 启动(带调试器),Ctrl+F5 不支持所有热重载场景
- 仅支持部分更改:改方法体内部、字符串值、
if条件等;新增类、改方法签名、动Program.cs顶层语句结构会触发“需要重启”提示 - 按
Alt+F10或点工具栏热重载按钮,状态栏出现 “Applying changes…” 表示正在注入,此时操作 UI 或触发对应逻辑就能看到效果 - 注意:WinForms/WPF/.NET Framework 项目不支持热重载,强行点会弹出不支持提示
引用或配置类修改(如 .csproj 或 appsettings.json)
这类改动常被忽略,但影响实际行为。
- 改
.csproj后(比如加了<packagereference include="Newtonsoft.Json"></packagereference>),VS 通常自动恢复 NuGet 包;但如果卡住,右键项目选“还原 NuGet 包” - 改
appsettings.json后无需重新生成,但要确保该文件的Copy to Output Directory属性设为Copy always或Copy if newer,否则运行时读不到 - 改
web.config(.NET Framework Web 项目)后,IIS Express 会自动检测并重载,但有时需手动刷新浏览器或清缓存
最容易被忽略的是:改了代码却忘了保存文件(Ctrl+S),或者改的是错误的文件副本(比如打开了解决方案外同名文件),VS 标题栏没显示 * 号就代表没保存——这种低级失误真不少见。










