翼度科技»论坛 编程开发 .net 查看内容

VSCode开发.net项目时调试无效

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
先说一下我遇到问题,我的项目是NET8.0版本,在VisualStudio上可以正常运行与调试,但是在VSCode里可以正常跑但无论怎么打断点都不会进去,提示"还没有为该文档加载任何符号"。

 其实最开始我以为是launch.json没有配置好,搞了一上午换了很多种配置方式结果都没有变。其中我创建新的net webapi项目运行起来断点也没问题,还跑了另一个正在开发的项目也没问题。最终确定问题可能出在启动项目的.csproj文件里,最后找到了问题所在——
DebugType 无、pdbonly、嵌入、可移植、或完整,从C#6开始pdbonly与full相同。这个设置成portable就行了,最后我附上ai对这个字段的解释
Q:vscode中 .csproj的DebugType为full  调试无效 改为portable就可以了
A:
 
如果您在使用 Visual Studio Code (VSCode) 进行 .NET Core 或 .NET 5/6+ 项目开发时遇到 DebugType 设为 full 时调试无效,而改为 portable 后调试正常的情况,这可能是由以下几个原因造成的:

  • C# 扩展不兼容:确保您安装的 OmniSharp 或 C# 扩展与您的 SDK 版本兼容。有时候扩展没有及时更新可能会导致与特定版本的调试信息不兼容。
  • SDK 行为变化:随着 .NET SDK 的更新,处理调试信息的方式可能会有所改变。在某些情况下,默认的 DebugType 可能已经变为 portable,而旧的工具链可能仍然期望 full 类型的 PDB 文件。
  • 调试配置问题:VSCode 的调试配置可能对 portable PDB 文件有特定的支持,而对 full PDB 文件支持不够完善。检查您的 launch.json 调试配置文件是否需要针对不同的 DebugType 做出调整。
  • 符号加载问题:在某些情况下,即使生成了 full 类型的 PDB 文件,调试器也可能无法正确加载符号。这可能是因为路径问题、符号缓存问题或其他配置问题。
  • 平台差异:如果您在不同的操作系统上进行开发,可能会发现某些 PDB 类型在不同平台上的表现不一致。
 以下是一些可能的解决步骤:

  • 更新扩展:确保 VSCode 中的 C# 扩展(OmniSharp)是最新的。
  • 检查 SDK 版本:确认您的 .NET SDK 和目标框架与您的开发环境和工具链兼容。
  • 更改调试设置:尝试在 launch.json 中添加或修改 "symbolLoadInfo" 设置,如下所示:
    1. {
    2.   "version": "0.2.0",
    3.   "configurations": [
    4.     {
    5.       "name": ".NET Core Launch (web)",
    6.       "type": "coreclr",
    7.       "request": "launch",
    8.       // ... 其他配置 ...
    9.       "symbolLoadInfo": {
    10.         "loadAll": true,
    11.         "requireModuleFiles": false,
    12.         "searchPaths": []
    13.       }
    14.     }
    15.   ]
    16. }
    复制代码
  • 清理并重新生成解决方案:删除 bin 和 obj 文件夹中的内容,然后重新编译项目以确保生成最新的调试信息。
 最后,如果将 DebugType 从 full 更改为 portable 解决了问题,那么您可以选择继续使用 portable,同时留意是否有更新或补丁来解决 full 类型的调试问题。由于 portable PDB 提供了好处的可移植性,并且通常在现代开发环境中能提供足够的调试信息,因此对于许多开发场景来说,这是一个合理的选择。
 




来源:https://www.cnblogs.com/h-z-h/p/18427661
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
来自手机

举报 回复 使用道具