C#程序集

  • Post author:
  • Post category:其他


程序集:

程序集(assembly)是包含编译好的、面向.NET Framework的代码的逻辑单元。

程序集是完全自描述性的,它是一个逻辑单元而不是物理单元,可以存储在多个文件中(动态程序集存储在内存中,而不是存储在文件中)。如果一个程序集存储在多个文件中,其中就会有一个包含入口点的主文件,该文件描述了程序集中的其他文件。可执行代码和库代码使用相同的程序集结构。唯一的区别是可执行的程序集包含一个主程序入口点,而库程序集不包含。程序集的一个重要特征是它们包含的元数据描述了对应代码中定义的类型和方法。程序集也包含描述程序集本身的元数据,这种程序集元数据包含在一个称为“清单(manifest)”的区域中,可以检查程序集的版本及其完整性。

ildasm是一个基于Windows的实用程序,可以用于检查程序集的内容,包括程序集清单和元数据。

程序集包含程序的元数据,表示调用给定程序集中的代码的应用程序或其他程序集不需要引用注册表或其他数据源,就能确定如何使用该程序集。这与以前的COM有很大的区别,以前,组件和接口的GUID必须从注册表中获取,在某些情况下,方法和属性的详细信息也需要从类型库中读取。把数据分散在3个以上的不同位置上,可能会出现信息不同步的情况,从而妨碍其他软件成功地使用该组件。有了程序集后,就不会发生这种情况,因为所有的元数据都与程序的可执行指令存储在一起。即使程序集存储在几个文件中,数据也不会出现不同步的问题。这是因为包含程序集入口的文件也存储了其他文件的细节、散列和内容,如果一个文件被替换,或者被复改,系统肯定会检测出来,并拒绝加载程序集。程序集有两种类型:私有程序集和共享程序集

私有程序集:

私有程序集是最简单的一种程序集类型。私有程序集一般附带在某个软件上,且只能用于该软件。附带私有程序集的常见情况是,以可执行文件或许多库的方式提供应用程序,这些库包含的代码只能用于该应用程序。系统可以保证私有程序集不被其他软件使用,因为应用程序只能加载位于主执行文件所在文件夹或其子文件夹中的私有程序集。用户一般会希望把商用软件安装在它自己的目录下,这样软件包不存在覆盖、修改或在无意间加载另一个软件包的私有程序集的风险。私有程序集只能用于自己的软件包,这样,用户对什么软件使用它们就有了更大的控制



版权声明:本文为L691321原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。