您好、欢迎来到现金彩票网!
当前位置:爱彩网app下载 > 公共语言 >

公共语言运行库(CLR)(5)

发布时间:2019-06-06 18:05 来源:未知 编辑:admin

  前面曾讲过,Windows DNA应用程序的最大问题之一就是隐含依赖性和版本化要求的数量。只要无意重写了一个通用系统DLL,或者删除了一个已安装的组件,一个应用程序就可能破坏另一个应用程序。为了解决这个问题,CLR使用了程序集。

  程序集是一个或多个文件的集合,其中的一个文件(DLL或EXE)包含了一些特殊的元数据,称为程序集清单。程序集清单定义了对程序集的版本化要求、程序集的作者、程序集运行时需的安全权限,以及构成部分程序集的文件。

  每当建立一个DLL时,默认状态下系统都会创建一个程序集。使用System.Reflection命名空间中的类可以编程查看清单的详细内容。为了集中讨论本节的内容,这里要使用SDK提供的一个工具 ILDASM (Intermediate Language Disassembler中间语言反汇编器)。可以通过命令提示来执行该工具,也可以通过Start Run菜单来执行它。

  当运行这个工具时,可以使用File Open菜单打开前面创建的简单继承性范例中的derived.dll。加载它之后,ILDASM会显示一个树状控制图,该控制图包含了程序集清单和该DLL中定义的每个类型,如图2-2所示。

  尽管MyCSharpClass的类型信息是该DLL的一部分,但它并不是程序集清单的一部分。不过它是程序集的一部分。如果双击MANIFEST项,将看到以下清单定义,如图2-3所示。

  该清单存储为二进制数据,因此这里看到的是以可读形式显示的反编译形式。其中.assembly extern行说明该程序集依赖于其他两个程序集:base和mscorlib。mscorlib是主CLR系统程序集,它包含了内置CLR类型的核心类和其他东西。base程序集是前面在建立文件base.vb时创建的。由编译器创建的程序集的默认名称反映了所创建的输出文件名,但不包括扩展名。如果前面用如下命令行来建立VB DLL:

  ● .ver:指定了编译程序集的版本。CLR使用Major:Minor:Build:Revision格式来表示版本号。如果Major或Minor版本号发生变化的话,程序集就是不兼容的。

  ● .hash:这是一个散列值,可用来决定引用程序集中的任何文件是否不同。

  ● .publickeytoken:指定了一个公共密钥的一部分,CLR可在加载引用程序集时使用该密钥,以100%地确保只加载由指定方(这里为Microsoft)提供的指定程序集。

  该清单中的.assembly derived部分为派生的.dll文件声明了程序集信息。外部清单也具有类似的特性。默认状态下,程序集的版本为0.0.0.0。如果要对其进行修改,可以在其中一个源文件中指定程序集版本特性。常会创建一个单独的源文件来包含这些特性。但如果它不在另一个类型定义的范围内,也可以在其他地方定义这些特性。

http://adcamp.net/gonggongyuyan/549.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有