HOW TO:檢索應用程序當前執行代碼的引用信息
2024-07-21 02:16:12
供稿:網友
 
 
    shared sub getreferenceinfomations() 
        dim a as system.reflection.[assembly] = system.reflection.assembly.getexecutingassembly 
        for each r as system.reflection.assemblyname in a.getreferencedassemblies 
            dim ra as system.reflection.[assembly] = system.reflection.assembly.load(r.fullname) 
            console.writeline("引用name:{0},引用dll:{1}", r.name, ra.location) 
        next 
    end sub
 
net應用程序對系統提供的程序集的引用采用緩存機制,我不懂這個機制,只能是看一看讀一讀。 
上面代碼在我本機運行的結果是這樣的(我的系統安裝在i盤,windows2003server):
 
引用name:microsoft.visualbasic,引用dll:i:/windows/assembly/gac/microsoft.visualbasic/7.0.5000.0__b03f5f7f11d50a3a/microsoft.visualbasic.dll 
引用name:tracelog,引用dll:i:/程序設計/test olutionlog/testruntimetypehandle/bin/tracelog.dll 
引用name:system,引用dll:i:/windows/assembly/gac ystem/1.0.5000.0__b77a5c561934e089 ystem.dll 
引用name:system.data,引用dll:i:/windows/assembly/gac ystem.data/1.0.5000.0__b77a5c561934e089 ystem.data.dll 
引用name:system.xml,引用dll:i:/windows/assembly/gac ystem.xml/1.0.5000.0__b77a5c561934e089 ystem.xml.dll
 
注意到沒有,它并不是引用i:/windows/microsoft.net/framework/v1.1.4322里的dll。對于用戶的,它倒是到用戶dll所在地址去找。通過net提供的某個命令(我忘了),可以將用戶的dll放到i:/windows/assembly/下,程序運行時自動到這個目錄下去引用。
 
你還可以發現,一般情形下,你用資源管理器是找不到i:/windows/assembly/gac或以下的子文件夾的(我原來估計是folder.htt文件里頭的配置,哈,windows2003已經取消這個文件了),不知非windows2003的系統能不能看到。但這個文件是確實存在的,你將i:/windows/assembly/gac ystem.xml/1.0.5000.0__b77a5c561934e089 ystem.xml.dll 
復制粘貼到地址欄上然后回車,就可以“下載”這個文件的了。或者你運行cmd.exe進入dos,可以dir出這些文件夾和文件的了。 
 
文件夾gac有特別的含義,它表示system.xml.dll的緩存類型為“gac”,這個信息你可以通過“microsoft .net framework 1.1 配置”查到。 
 i:/windows/assembly/gac ystem.xml/1.0.5000.0__b77a5c561934e089 ystem.xml.dll的意義為:
gac ,緩存類型
system.xml,程序集名稱
1.0.5000.0,版本號
b77a5c561934e089,公鑰標記
以后有必要再深入一下。如果各位有補充或修改補充的話那再好不過的了。