You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:30:23