VS中Kestrel托管Blazor Server如何实现Razor文件变更自动重建?
VS2019下Kestrel托管Blazor Server实现自动重建的适配方案
行为差异核心原因:VS2019针对IIS Express托管的启动流程,会自动挂载内置的文件变更监听、静默重建逻辑;当通过launchSettings.json切换为原生Kestrel托管后,这套关联逻辑会被自动断开,并非Kestrel本身不支持文件变更监听。
适配步骤(完全保留Ctrl+F5启动习惯,无需手动操作命令行)
- 打开项目属性目录下的
launchSettings.json,定位到你平时用于启动的Kestrel对应的启动配置 - 将该配置段内的
commandName字段值从默认的Project修改为DotNetWatch,其余配置(启动URL、浏览器自动打开规则、环境变量、Kestrel端口配置)完全保留,不需要做任何调整
配置修改前后的示例参考:
修改前(默认Kestrel配置,无自动重建):
修改后(绑定dotnet watch能力,保留Kestrel托管):{ "profiles": { "BlazorKestrelDev": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }{ "profiles": { "BlazorKestrelDev": { "commandName": "DotNetWatch", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } - 配置保存后,日常启动操作和之前完全一致:直接按F5(带调试)、Ctrl+F5(无调试快速启动)即可触发启动,VS会在后台自动挂载dotnet watch的文件变更监听能力,全程不需要手动打开命令行执行命令
体验对齐细节调整
- 默认状态下,.NET5版本的dotnet watch对Razor组件、后端C#代码的变更感知、静默重建逻辑,和IIS Express托管的自动重建行为完全一致:保存修改的文件后无需手动触发编译,重建完成后会自动刷新关联的浏览器页面
- 如果需要自定义监听范围,可在项目根目录添加
watch.config.json配置文件,手动指定需要纳入监听的文件路径、需要排除的临时文件路径,进一步匹配你之前在IIS Express下的使用习惯 - 若你的VS2019版本低于16.10,无法识别
DotNetWatch的commandName字段,可将该字段值替换为Executable,指定可执行路径为dotnet.exe,启动参数填写watch run,其余配置保持不变,可实现完全相同的效果
注意事项
- 不要在启动参数中额外添加
--no-launch-profile,否则会覆盖你在launchSettings.json中配置的Kestrel端口、环境变量规则,导致托管行为和预期不一致 - 该配置启动的服务依然是原生Kestrel托管,日志输出、运行速度和你之前手动配置的Kestrel模式完全一致,不会因为绑定了文件监听能力产生额外的性能损耗
内容的提问来源于stack exchange,提问作者thankyoussd
相关产品推荐
相关产品推荐

