Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安
最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一个很常见也具有普遍代表性的问题,解决方案也是通用的,本文我们就来学习如何对已经安装了 dll 的项目的源代码进行断点调试。 PS:以下方法适用于所有项目。 一、配置第一步:打开 Visual Studio 2019(低版本操作应该也是类似的) 第二步:点击顶部菜单【工具】>【选项...】 第三步:在【选项】窗口中,左侧列表选择【调试】 第四步:在右侧窗口中:
以下是我的开发环境完成的配置:
? 第五步:点击当前窗口左侧当前选中的【常规】下方的【符号】,选中右侧【NuGet.org 符号服务器】,再点击右上方【+】号,添加地址:https://nuget.smbsrc.net,并选中: ? ?? 这一步用于定义符号文件(即包含源代码调试定位信息的文件),以后每次调试,都会自动加载相关的文件,为了加快速度,我们可以原先进行缓存,点击下方【加载所有符号】按钮,然后等待缓存结束。 注意:预先加载需要耗费比较多的时间(我重新测试了一次大概用了 20 分钟),但是为了减少后面的反复等待时间,这是值得的(缓存并不会占用太多硬盘空间,请放心加载)。如果程序集有比较大的变化,或者发生问题,也可以使用下方的按钮清空并重新加载。 设置完成后点击【确定】按钮。 ? 二、试验下面让我们以 Senparc.Weixin SDK 来测试一下,顺便学习一下如何创建新项目和安装 nuget 包。 第一步:打开 Visual Studio 2019
? ?? 第二步,点击【创建新项目】,选择【ASP.NET Core Web 应用程序】(也可以选择 .NET Framework 项目): ? ? 第三步:点击【下一步】,配置项目名称、路径等参数,如: ? ? 第四步:点击【创建】,在项目模板中选择【Web 应用程序】(也可以选择其他站点模板,主要为了演示调试过程,所以不重要): ? ? 第五步:点击【创建】,完成原始项目的创建: ? ? 第六步:对项目标题点右键,选择【管理 Nuget 程序包...】 ? ? 第七步:在打打的窗口中,选择【浏览】标签,在搜索框内输入:Senparc.Weixin.MP,回车: ? ? 请注意:盛派官方发布的库都带有“盛派”logo的库,并请仔细核对全名,有些库是第三方开发者发布的。 第八步:选中【Senparc.Weixin.MP】,在右侧点击【安装】按钮,如弹出确认框,点击【我接受】。稍等片刻即可安装完成(如果无法安装,请更改 nuget 源,具体方法不在本文展开): ? ? 第九步:打开 startup.cs,在?ConfigureServices() 方法中,写入代码((.NET Framework 项目可打开 global.asax.cs,在 Application_Start() 方法中): var nonceStr = Senparc.Weixin.MP.Helpers.JSSDKHelper.GetNoncestr();
? 此时,我们已经可以在非调试状态下查看反编译的源码(这一步不是接下去使用断点调试源码必须的,只作为可以扩展):把光标移到?GetNoncestr 方法名上,点击鼠标右键,点击【转到定义】(或直接按 F12),此时会显示提示框,点击【是】,即可看到 dll 中的源代码: ? ? 注意:此源代码是从 dll 反编译过来的源代码,已经在编译过程中进行了优化,因此未必每个字符都 100% 和源代码一致,甚至部分局部变量会被重新命名,但是最终执行结果是一致的,也不会影响到调试。 关闭反编译源码的窗口(必须)*,然后回到 startup.cs,我们给 GetToken() 语句打上断点: ? 最后一步(第十步):点击菜单【调试】>【开始调试】(或直接按 F5)运行程序(注意:请保证当前的编译模式为 Debug): ? ?? 静静等待断点命中,在此过程中,VS 会自动载入一系列跟踪源码需要的文件,可能需要一段时间,这取决于依赖包的数量和当前的网速: ? ? 稍等之后,即可命中语句: ? ? 键盘点击 F11,就像你调试当前解决方案中的代码一样(如果提示是否允许从 github 下载源代码,点击同意): ? 可以看到,现在 VS 打开了 github 上源代码的窗口,此时如果继续点击 F11,可以进入到此方法中调用的 Guid.NewGuid() 的 .net core 的相关方法: ? 现在连续点击 F10,我们让程序继续执行,并在 startup.cs 中返回结果: ? ?? PS: * 之所以在调试源码之前必须要关闭反编译的窗口,是因为反编译的代码(包括代码位置、名称定义)和源码相比通常都会有出入,如果在调试的时候,打开着反编译代码窗口,VS 会优先进入到反编译窗口进行调试,但是调试定位是根据符号文件定义的,也就是说定位的源代码的原始位置,此时可能就会出现偏差。 ? 列教程索引地址:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html
(编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |