2009年6月18日 星期四

在 GAC上的元件,如何以得到 StackTrace infomation?

一般在開發元件時,通常不會選擇放在 GAC。除了 GAC 需要 strong name 及版本號,需要管理外,也有一個常見的問題:放在 GAC 上的元件,若出現 Exception 時,會得不到在 .pdb 檔上的資訊。

那真的沒辦法嗎?今天終於找到答案。

以 command ,進入 c:\windows\assembly 後,dir 一下,得到下面左邊畫面。

image image

此時你會發現,此目錄結構與檔案總管的不同。(右邊)
再深入一些,你就會發現,原來放到 GAC 的元件,是放到這些目錄的。而且,在 GAC_MSIL 目錄下,出現了一堆的元件,其中,我的元件 EPMossLibrary 就在其中了。
進入子目錄後,就會發現,原來同一個元件,可以有不同的版本、公開金鑰,是因為目錄編排的關係。

image

再進子目錄,就是元件放置的地方。使用 GACUtil 或檔案總管來註冊,只會複製 *.dll 檔的。那就自行使用 dos command: copy 來複製元件 pdb 吧!

image

這樣一來, StackTrace 的資料就有行號了。

沒有留言:

Share with Facebook