VS Code缓存ASP.NET Core 8.0 MVC视图异常问题求助
问题描述
我有一个ASP.NET Core 8.0 MVC项目,在VS Code里碰到个怪事:改了路由和视图之后,系统完全不认这些变更,一直重定向到某个特定区域,试了各种修改都没用。但把项目拿到VS 2022里打开,一切又正常了。
我把那个被重定向的区域文件夹都删了,启动项目时却发现该区域和视图还在。我清理了各种缓存,甚至卸载重装了VS Code,问题还是没解决。
想问下是不是还有遗漏的Windows缓存或临时文件?VS Code是怎么缓存视图的?
原启动配置文件
"configurations": [ { // Use IntelliSense to find out which attributes exist for C# debugging // Use hover for the description of the existing attributes // For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md. "name": "Dev .NET Core Launch (web)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", // If you have changed target frameworks, make sure to update the program path. "program": "${workspaceFolder}/bin/Debug/net8.0/MyCoreProject.Web.dll", "args": [], "cwd": "${workspaceFolder}", "stopAtEntry": false, // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser "serverReadyAction": { "action": "openExternally", "pattern": "\\bNow listening on:\\s+(https?://\\S+)" }, "env": { "ASPNETCORE_ENVIRONMENT": "Development" }, "sourceFileMap": { "/Views": "${workspaceFolder}/Views" }, } ]
解决方案
一、排查遗漏的Windows缓存/临时文件
- 清理编译产物缓存:直接删掉项目根目录下的
bin和obj文件夹,这俩目录存的是编译生成的中间文件,旧产物残留很容易导致路由和视图不更新。 - 清理ASP.NET Core运行时缓存:删掉
%USERPROFILE%\.aspnet\DataProtection-Keys里的文件,还有%LOCALAPPDATA%\Temp\ASP.NETCore文件夹,这些是ASP.NET Core运行时的临时缓存,有时候会卡住旧的配置。 - 清空浏览器缓存:如果是浏览器端的重定向问题,大概率是浏览器缓存了旧路由,按
Ctrl+Shift+Delete清理,重点选“缓存的图像和文件”。 - 检查IIS Express缓存(如果用了的话):要是项目用IIS Express运行,删掉
%USERPROFILE%\Documents\IISExpress里的相关站点配置和缓存文件。
二、VS Code对ASP.NET Core视图的缓存逻辑
VS Code本身不会直接缓存ASP.NET Core视图,问题大多出在这些环节:
- C#扩展的调试缓存:VS Code的C#扩展调试时可能会缓存编译后的程序集,虽然你启动配置里设了
preLaunchTask": "build",但可以手动先跑dotnet clean再dotnet build,确保完全清理旧产物。 - Razor视图编译缓存:ASP.NET Core开发环境默认动态编译Razor视图,但偶尔会有缓存残留。可以在项目的
.csproj文件里加这段配置,强制禁用编译缓存:<PropertyGroup> <RazorCompileOnBuild>false</RazorCompileOnBuild> <RazorCompileOnPublish>true</RazorCompileOnPublish> </PropertyGroup> - VS Code工作区缓存:VS Code的工作区索引可能残留旧文件信息,按
Ctrl+Shift+P打开命令面板,执行Developer: Reload Window重启窗口;或者备份后删掉项目根目录的.vscode文件夹,重新生成配置。
额外排查点
- 检查
sourceFileMap配置:你的启动配置里设了"/Views": "${workspaceFolder}/Views",确认这个路径没指向旧的区域文件夹。 - 核对项目路由配置:检查Startup.cs或Program.cs里的路由规则,比如
app.MapAreaControllerRoute的配置是不是还关联着旧区域。 - 确认环境变量和缓存中间件:启动配置里的
ASPNETCORE_ENVIRONMENT是Development,确保开发环境没启用app.UseResponseCaching()这类缓存中间件,不然会缓存路由响应。
内容的提问来源于stack exchange,提问作者Braden
相关产品推荐
相关产品推荐

