当前位置:编程学习 > asp >>

程序集和反射(一)

 

正常情况下,C#代码编译后生成构造块,一般分为以下几种:

exe --可执行程序(winform程序生成的叫winexe,控制台程序生成的是exe)

dll --动态链接库(可以动态加载的类库,是Windows系统中专用的)

netmodule --模块 (VS开发工具中无法生成模块,只能在SDK编译器下以命令行的方式手动生成)

这些都是Windows系统和Windows编程中才会有的概念。值得提醒的是:.NET平台上的托管代码,编译后

生成的exe,dll,和普通的win32应用程序(C/C++/VB6等)生成的exe,dll不同。

程序集,其实就是指的.NET框架应用程序的构造块,一般表现为exe和dll

在.NET出现之前,根本没有“程序集”这么个概念。

程序集的优点:

解决版本控制问题

解决dll冲突(Windows历史上著名的dll地狱)

Windows系统不允许相同目录下重名,所以会造成dll覆盖的严重问题。

通常软件安装都会操作“注册表”,还会往安装目录中写(dll)文件。

环境变量: 比如path, 是告诉系统, 当要求系统运行一个程序而没有告诉它程序所在的完整路径时,

系统除了在当前目录下面寻找此程序外, 还应到哪些目录下去寻找;)

以前在做Windows应用程序开发时,经常会将很多dll文件,拷贝到Windows环境变量指定的目录下。

这样的话,也容易重名,引发dll地狱

.NET中使用了GAC(全局应用程序缓存)来解决DLL地狱:

有了GAC,应用程序dll不需要拷贝到环境变量下,而是直接存放在GAC中。

程序集(dll)必须先加“签名”,这样的话,即使是重名,也不会发生冲突了。

GAC目录默认在C:/Windows/assembly下。

程序集组成:

1.程序集清单:可以看作是目录

2.类型元数据:指的是编程中用到的资源,元数据是自我描述的

3.实现这些类型的MSIL(中间语言)

4.资源集(二进制)

单文件程序集:单层的小项目通常都是一个dll

多文件程序集:由于dll文件过大,加载困难,消耗资源。

              所以,将某些模块独立出来,生成“多文件程序集”

使用SDK命令提示符,可以手动生成netmodule(模块)。

程序集清单的内容:

程序集的版本:可以通过,项目-右键-属性-程序集信息去修改。

              在winform中,也可以通过修改AssemblyInfo.cs文件来实现

程序集的两种部署方式:

1.共享(全局)程序集:也叫“强命名程序集”,将程序集保存在GAC中(必须加签名)

2.私有程序集:也叫“弱命名程序集”,将程序集保存在应用程序目录或者子目录

 

使用SN工具,手动构建“强命名程序集”:

摘自 :编程世界一凡人

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,