2009年11月3日 星期二

怎麼把GAC區中的DLL拿出來

這兩天要安裝一個用VS 2003開發的.NET專案,原本想說是一件很簡單的事情,不就是把專案拿來,放到IIS上,確定.NET Framework 1.1以及service pack有掛上去就一定OK了,沒想到第一個問題馬上讓我遇見,這個專案使用了 IE Web Control  ,原本以為網路上隨便就可以找到這個元件了,沒想到網路上的元件最後的版號都是226,而該專案使用的卻是116,我其實想說新版本應該要可以相容於舊版本的,不過程式就是很不給面子死不過去,為了這件事情,我還特別跑去原本放專案的Server(還進機房><),進GAC中去確認版次。
GAC的畫面,位於Windows\Assembly,如下圖


這下子好了,網路上根本已經沒有這個版次的DLL了,而在Server上的DLL又被註冊到GAC區中,這真是考倒我了(上面那個視窗中,並沒有任何方式可以把DLL匯出或複製出來)。還好我以前學過Java的,我判斷這種放在最大的Global中的Lib應該都還是有實體的檔案存在才對,上Google爬了一下,發現居然可以使用Console模式進入到該路徑中,如下圖

進入到 Windows\assembly\GAC中之後,打dir指令,可以看到GAC中所有被註冊的DLL以[DIR]的形式存在,想當然爾我們就在使用指令進入,例如我想要再進入 System.xml中
如上圖,進入後還會再有一個以特殊命名方式的資料夾,我們再進入該資料夾後,如下圖

此時就可以看到該dll了,這個時候使用copy指令就可以把這個dll複製出來了。也算是這一次遇到問題的小收穫。

沒有留言: