Linux下在Visual Studio Code调试ASP.NET Core时修改视图问题
解决ASP.NET Core 2.0在VS Code(Ubuntu)中视图修改需重启应用的问题
我之前在Ubuntu上用VS Code开发ASP.NET Core的时候也碰到过一模一样的问题,折腾了好一会儿才搞定,给你几个实用的解决方案:
1. 确保处于开发环境
ASP.NET Core只有在Development环境下才会启用视图的动态编译(也就是改完刷新就能看),所以先确认你的环境配置正确:
- 检查项目根目录的
appsettings.Development.json,确保环境标识配置无误; - 在Ubuntu终端运行
echo $ASPNETCORE_ENVIRONMENT,输出应该是Development。如果不是,执行export ASPNETCORE_ENVIRONMENT=Development临时设置,或者把这个命令加到~/.bashrc里永久生效。
2. 手动开启视图热重载
有时候默认的动态编译可能被项目配置覆盖,你可以在Startup.cs的ConfigureServices方法里明确设置:
public void ConfigureServices(IServiceCollection services) { services.AddMvc() .AddRazorOptions(options => { // 开启视图文件变化时自动重新编译 options.AllowRecompilingViewsOnFileChange = true; }); }
保存修改后重启一次应用,之后再修改视图,刷新浏览器就能看到变更了。
3. 用dotnet watch命令启动应用
VS Code自带调试器对视图文件的变化监听有时候不够灵敏,换成dotnet watch启动会更靠谱:
- 在VS Code终端进入项目根目录,执行
dotnet watch run; - 这个命令会自动监视所有项目文件变化,包括视图,修改保存后会自动触发重新编译,你只需要刷新浏览器,完全不用重启应用。
如果习惯用VS Code的调试按钮,也可以在tasks.json里配置自定义任务:
{ "version": "2.0.0", "tasks": [ { "label": "watch", "command": "dotnet watch run", "type": "shell", "isBackground": true, "problemMatcher": "$msCompile" } ] }
再在launch.json里配置调试时先运行这个任务,点击调试按钮就会自动用dotnet watch启动了。
4. 检查项目编译配置
打开你的.csproj文件,确保没有开启发布专用的视图预编译:
<PropertyGroup> <!-- 开发环境下不要预编译视图,确保这个值为false --> <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish> </PropertyGroup>
按上面的步骤试一遍,应该就能解决问题了!
内容的提问来源于stack exchange,提问作者Kaloyan Manev
相关产品推荐
相关产品推荐

