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,公钥标记
以后有必要再深入一下。如果各位有补充或修改补充的话那再好不过的了。