码迷,mamicode.com
首页 > 其他好文 > 详细

VS如何在调试时进入到dll文件

时间:2018-10-13 02:28:53      阅读:430      评论:0      收藏:0      [点我收藏+]

标签:编写   没有   .com   路径   ajax   项目   版本   eth   src   

背景:

    项目A:用C#写的一个类库文件
  项目B:引用项目A的dll文件,完成编码,也是C#编写的。

  需求:怎么能在调试的时候,调试断点能够从项目B中进入项目A中的代码。

解决办法就是:

  假设,项目B引用的项目A的dll文件是 a.dll ,并且a中没有引用项目A中其他的文件或者命名空间。如果a.dll中还引用了A项目下的其他命名空间的内容,如a2,那么在下面的操作也要包含a2的对应部分。

  将项目A下A.Web文件夹下bin文件夹(即路径:A/A.Web/bin/ )下的 a.dll与a.pdb文件,同时拷贝到B项目的外部引用文件夹下。这个"同时" 的含义是保证dll与pdb文件是同一个版本的。也就是说,你不能用时间点1的dll配合时间点2的pdb文件来进行调试进入dll的操作。如果a中还引用了a2命名空间的内容,那么必须也将a2.dll与a2.pdb文件同时拷贝过去,这个同时的含义同上。并且这个a2与a也是同时的。

  这些准备好了之后,B项目中重新生成,在B项目中,在你引用a.dll中函数的地方加断点,单步调试即可进入A项目中对应的被调函数。

表达上可能有含糊或者不准确的地方,还请批评指正。

 

实例说明:

  在PMCost项目中,部分代码如下,19行红色框内的函数引用自ACore项目中的Common命名空间下AjaxMethodAttribute.cs,我们知道,在生成dll的时候AjaxMethodAttribute.cs下的函数会被包含在ACore.Common.dll下。

技术分享图片

  并且AjaxMethodAttribute.cs中只引用了system及其两个子类,并没有引用 PMCost项目下的其他自定义命名空间。所以在拷贝的时候只需要拷贝ACore.Common.dll 及ACore.Common.pdb即可。

技术分享图片

技术分享图片

 

将两个文件拷贝到PMCost项目的外部引用中,在函数调用位置之前加断点,单步调试即可进入dll中。

技术分享图片

 技术分享图片

 

VS如何在调试时进入到dll文件

标签:编写   没有   .com   路径   ajax   项目   版本   eth   src   

原文地址:https://www.cnblogs.com/dyhao/p/9781208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!