Azure Web App ASP Razor预编译视图错误:MVC项目发布遇CS0246异常
解决MVC发布时CS0246找不到
MvcSiteMapProvider的问题 这种情况我之前也碰到过——明明代码里早就删掉相关内容了,本地运行完全正常,一发布就报这个错,大概率是发布流程里残留了旧编译文件、临时视图缓存在搞鬼,给你几个一步步排查的解决方案:
1. 手动清理本地临时视图缓存
你提到错误触发自D:\local\Temporary ASP.NET Files这类临时目录,直接定位清理:
- 找到对应路径(常见路径还有
C:\Users\[你的用户名]\AppData\Local\Temp\Temporary ASP.NET Files) - 删除和你项目相关的所有子文件夹
- 重启Visual Studio,重新生成项目后再尝试发布
2. 清空项目编译输出文件
- 右键项目,打开文件夹所在位置
- 手动删除
bin和obj两个文件夹(这俩是编译自动生成的,重新生成会重建) - 回到VS,点击菜单栏的生成 → 清理解决方案,再执行生成解决方案
3. 排查项目配置里的隐藏残留引用
有时候代码里删了,但项目文件还偷偷留着引用:
- 右键项目 → 卸载项目
- 右键卸载的项目 → 编辑
.csproj文件 - 搜索
MvcSiteMapProvider,把所有相关的<Reference>或<PackageReference>节点删掉 - 保存文件后重新加载项目,再生成发布
4. 检查视图文件的遗漏引用
有些视图里的引用容易被忽略:
- 用VS的全局查找功能(Ctrl+Shift+F),在整个解决方案里搜索
MvcSiteMapProvider - 重点检查布局页(_Layout.cshtml)、部分视图这类容易复用的文件,删掉所有残留的
@using指令或相关HtmlHelper调用
5. 配置发布时强制清理服务器旧文件
如果是发布到远程服务器,可能服务器上还留着旧文件:
- 打开发布配置文件(
.pubxml) - 在
<PropertyGroup>节点里添加一行:<DeleteExistingFiles>True</DeleteExistingFiles> - 这样发布时会先清空服务器上的旧文件,再部署新文件,避免旧文件干扰
按这个顺序排查下来,基本能解决问题。我上次就是临时缓存没清干净,删了Temp里的项目文件夹就搞定了。
内容的提问来源于stack exchange,提问作者eg_dac
相关产品推荐
相关产品推荐

