C#中的程序集和反射介绍
什么是程序集?
1.程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合。
2.程序集是组件复用,以及实施安全策略和版本策略的最小单位。
3.程序集是包含一个或者多个类型定义文件和资源文件的集合。在程序集包含的所有文件中,有一个文件用于保存清单。(清单是元数据部分中一组数据表的集合,其中包含了程序集中一部分文件的名称,描述了程序集的版本,语言文化,发布者,共有导出类型,以及组成该程序集的所有文件)。
4、在编译应用程序中,所创建的CIL代码存储在一个程序集中,程序集包括可执行的应用程序文件(.exe扩展名文件)和其他应用程序使用的库(.dll扩展名文件)。
作为一个单元进行版本控制和部署的一个或多个文件的集合。程序集是.NETFramework应用程序的主要构造块。所有托管类型和资源都包含在某个程序集内,并被标记为只能在该程序集的内部访问,或者被标记为可以从其他程序集中的代码访问。程序集在安全方面也起着重要作用。代码访问安全系统使用程序集信息来确定为程序集中的代码授予的权限集。
程序集是.NETFramework编程的基本组成部分。(此上是在百度百科的定义)
简单的说,net中的dll和exe文件都是程序集
程序集包含资源文件,类型元数据(描述在代码中定义的每一类型和成员,二进制形式)、IL代码(这些都被装在exe或dll中),每个程序集都有自己的名称、版本等信息。这些信息可以通过AssemblyInfo.cs文件来自己定义。
usingSystem.Reflection; usingSystem.Runtime.CompilerServices; usingSystem.Runtime.InteropServices;
//有关程序集的常规信息通过以下 //特性集控制。更改这些特性值可修改 //与程序集关联的信息。 [assembly:AssemblyTitle("AssemblyDemo")] [assembly:AssemblyDescription("")] [assembly:AssemblyConfiguration("")] [assembly:AssemblyCompany("")] [assembly:AssemblyProduct("AssemblyDemo")] [assembly:AssemblyCopyright("Copyright© 2013")] [assembly:AssemblyTrademark("")] [assembly:AssemblyCulture("")]
//将ComVisible设置为false使此程序集中的类型 //对COM组件不可见。如果需要从COM访问此程序集中的类型, //则将该类型上的ComVisible特性设置为true。 [assembly:ComVisible(false)]
//如果此项目向COM公开,则下列GUID用于类型库的ID [assembly:Guid("e7da9959-0c97-444c-aa40-6d9bbf728068")]
//程序集的版本信息由下面四个值组成: // // 主版本 // 次版本 // 内部版本号 // 修订号 // //可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, //方法是按如下所示使用“*”: //[assembly:AssemblyVersion("1.0.*")] [assembly:AssemblyVersion("1.0.0.0")] [assembly:AssemblyFileVersion("1.0.0.0")]
AssemblyInfo.cs