VS如何在調試時進入到dll文件


背景:

    項目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中。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM