Visual Studio 2012中使用CM.sms.dll出现“无可用源代码”错误求助
解决NuGet安装CM.sms.dll后调试时“无可用源代码”的问题
我之前也碰到过类似的情况,其实这个错误本质上是调试器找不到CM.sms.dll对应的源代码文件导致的,它并不会影响程序的正常运行,只是在调试时会弹出这个提示。下面给你几个可行的解决办法:
直接跳过调试继续运行
如果只是想让程序正常跑起来,不需要调试这个第三方类库的代码,你可以直接点击调试器弹窗里的“继续执行”(或者按F5),程序会正常执行后续逻辑,这个提示不会影响功能。检查并安装符号包(.snupkg)
有些NuGet包的作者会同时发布符号包,符号包包含了调试所需的符号信息,能帮助调试器定位代码。你可以:- 打开NuGet包管理器,搜索
CM.sms,看看是否有对应的符号包(通常后缀是.snupkg); - 如果有符号包,安装它;
- 打开Visual Studio的「工具->选项->调试->符号」,勾选「Microsoft符号服务器」,如果是自定义符号源也可以添加进去,然后重启调试。
- 打开NuGet包管理器,搜索
反编译代码供调试使用
如果没有官方的符号包或源代码,又确实需要调试这个类库的逻辑,可以用反编译工具(比如ILSpy、dnSpy)把CM.sms.dll反编译成C#代码,然后:- 将反编译后的
SmsGatewayClient.cs文件放到调试器提示的路径(也就是c:\dev\SMS\CM.Sms.Server.Client\CM.Sms.Server.HttpMTGateway.Client\CM.Sms.Gateway.NugetPackage\CM.Sms\); - 或者在调试器弹出的“查找源代码”对话框里,直接选择你保存反编译文件的位置,调试器就会加载这个文件用于调试(注意反编译的代码可能和原始代码有细微差异)。
- 将反编译后的
禁用该类库的符号加载
如果你不想再看到这个提示,可以设置永远不加载该类库的符号:- 调试时打开「调试->窗口->模块」;
- 在模块列表里找到
CM.sms.dll,右键选择「符号加载选项」; - 选择「永远不加载符号」,之后调试时就不会再弹出这个错误提示了。
内容的提问来源于stack exchange,提问作者aggicd
相关产品推荐
相关产品推荐

