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

先说一下我遇到问题,我的项目是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 后调试正常的情况,这可能是由以下几个原因造成的:

  1. C# 扩展不兼容:确保您安装的 OmniSharp 或 C# 扩展与您的 SDK 版本兼容。有时候扩展没有及时更新可能会导致与特定版本的调试信息不兼容。

  2. SDK 行为变化:随着 .NET SDK 的更新,处理调试信息的方式可能会有所改变。在某些情况下,默认的 DebugType 可能已经变为 portable,而旧的工具链可能仍然期望 full 类型的 PDB 文件。

  3. 调试配置问题:VSCode 的调试配置可能对 portable PDB 文件有特定的支持,而对 full PDB 文件支持不够完善。检查您的 launch.json 调试配置文件是否需要针对不同的 DebugType 做出调整。

  4. 符号加载问题:在某些情况下,即使生成了 full 类型的 PDB 文件,调试器也可能无法正确加载符号。这可能是因为路径问题、符号缓存问题或其他配置问题。

  5. 平台差异:如果您在不同的操作系统上进行开发,可能会发现某些 PDB 类型在不同平台上的表现不一致。

 以下是一些可能的解决步骤:

  • 更新扩展:确保 VSCode 中的 C# 扩展(OmniSharp)是最新的。

  • 检查 SDK 版本:确认您的 .NET SDK 和目标框架与您的开发环境和工具链兼容。

  • 更改调试设置:尝试在 launch.json 中添加或修改 "symbolLoadInfo" 设置,如下所示:

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": ".NET Core Launch (web)",
          "type": "coreclr",
          "request": "launch",
          // ... 其他配置 ...
          "symbolLoadInfo": {
            "loadAll": true,
            "requireModuleFiles": false,
            "searchPaths": []
          }
        }
      ]
    }
  • 清理并重新生成解决方案:删除 bin 和 obj 文件夹中的内容,然后重新编译项目以确保生成最新的调试信息。

 最后,如果将 DebugTypefull 更改为 portable 解决了问题,那么您可以选择继续使用 portable,同时留意是否有更新或补丁来解决 full 类型的调试问题。由于 portable PDB 提供了好处的可移植性,并且通常在现代开发环境中能提供足够的调试信息,因此对于许多开发场景来说,这是一个合理的选择。

 



posted @ 2024-09-23 18:58  _韭菜盒子  阅读(168)  评论(0编辑  收藏  举报