HOW TO:检索应用程序当前执行代码的引用信息

HOW TO :检索应用程序当前执行代码的引用信息

Author: 水如烟 (http://blog.csdn.net/lzmtw)

Date: 2005-4-17

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\solutionlog\testruntimetypehandle\bin\tracelog.dll

引用 Name:System, 引用 Dll:i:\windows\assembly\gac\system\1.0.5000.0__b77a5c561934e089\system.dll

引用 Name:System.Data, 引用 Dll:i:\windows\assembly\gac\system.data\1.0.5000.0__b77a5c561934e089\system.data.dll

引用 Name:System.Xml, 引用 Dll:i:\windows\assembly\gac\system.xml\1.0.5000.0__b77a5c561934e089\system.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\system.xml\1.0.5000.0__b77a5c561934e089\system.xml.dll

复制粘贴到地址栏上然后回车,就可以“下载”这个文件的了。或者你运行 cmd.exe 进入 dos ,可以 dir 出这些文件夹和文件的了。

文件夹 gac 有特别的含义,它表示 system.xml.dll 的缓存类型为“ Gac ”,这个信息你可以通过“ Microsoft .NET Framework 1.1 配置”查到。

i:\windows\assembly\gac\system.xml\1.0.5000.0__b 77a 5c 561934e089\system.xml.dll 的意义为 :

gac ,缓存类型
system.xml ,程序集名称
1.0.5000.0 ,版本号
b 77a 5c 561934e089 ,公钥标记

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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus