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 后调试正常的情况,这可能是由以下几个原因造成的:
[*]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" 设置,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
// ... 其他配置 ...
"symbolLoadInfo": {
"loadAll": true,
"requireModuleFiles": false,
"searchPaths": []
}
}
]
}
[*]清理并重新生成解决方案:删除 bin 和 obj 文件夹中的内容,然后重新编译项目以确保生成最新的调试信息。
最后,如果将 DebugType 从 full 更改为 portable 解决了问题,那么您可以选择继续使用 portable,同时留意是否有更新或补丁来解决 full 类型的调试问题。由于 portable PDB 提供了好处的可移植性,并且通常在现代开发环境中能提供足够的调试信息,因此对于许多开发场景来说,这是一个合理的选择。
来源:https://www.cnblogs.com/h-z-h/p/18427661
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]