首页 > 开发 > 综合 > 正文

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,公钥标记



以后有必要再深入一下。如果各位有补充或修改补充的话那再好不过的了。




 



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表