调试Linq查询时弹出浏览器窗口提示"源文件未找到"的问题排查
解决Visual Studio 2017调试EF Linq查询时找不到系统文件的问题
这种情况我之前也碰到过,本质上不是你的EF模型或者代码有问题,而是Visual Studio调试器在加载.NET Framework系统符号时出了偏差,导致它试图定位本地不存在的框架源文件(比如rttype.cs这类)。下面是几个亲测有效的解决步骤,按顺序试就行:
1. 开启「仅我的代码」调试模式
这是最快能解决问题的方法,让调试器只关注你写的代码,跳过系统框架的代码调试:
- 打开VS,点击顶部菜单的 Tools -> Options
- 展开 Debugging -> General
- 勾选「Enable Just My Code」(中文是「启用仅我的代码」),然后点击确定
- 重启调试,应该就不会再弹出找系统文件的窗口了
2. 调整符号加载配置
如果需要调试框架代码(不过你这个场景应该不需要),可以修正符号加载的设置:
- 同样在 Tools -> Options -> Debugging -> Symbols
- 如果你之前勾选了「Microsoft Symbol Servers」,先取消勾选——有时候远程符号加载不完整,会导致调试器乱找本地文件
- 要是确实需要微软符号,建议设置一个本地符号缓存路径(比如
C:\VS_Symbols),让VS把下载的符号存在本地,避免重复下载和出错
3. 重置VS调试器配置
如果是调试器配置错乱导致的问题,重置配置就能解决:
- 关闭所有VS窗口
- 以管理员身份打开命令提示符,运行命令:
devenv /ResetSettings - 这个命令会把VS的所有设置重置为默认,不会删除你的项目文件,也不会影响TS等其他开发环境的配置,放心用
4. 清理VS2017的本地缓存
你担心清理缓存影响TS是多余的,这些缓存都是VS的临时文件,和你的项目依赖无关:
- 关闭VS
- 删除以下几个文件夹(路径里的
<随机字符>是你VS安装的标识,每个机器不一样,找带15.0前缀的就行):%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_*\ComponentModelCache%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_*\Temp%TEMP%\VisualStudioLogs
- 重启VS,它会自动重建必要的缓存文件
5. 验证EF模型项目的调试符号
确保你的EF模型项目生成了完整的调试符号:
- 右键EF模型项目,选择 Properties -> Build
- 点击右下角的 Advanced 按钮
- 在「Debug Info」下拉框里选择「Full」(中文是「完整」)
- 清理并重建整个解决方案
按上面的步骤试下来,基本就能解决调试时弹出找系统文件的问题了。毕竟你的Linq查询本身能正常运行,说明业务逻辑没问题,只是调试器的配置出了小状况。
内容的提问来源于stack exchange,提问作者High Plains Grifter
相关产品推荐
相关产品推荐

