程序集和反射(一)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 03:27 点击:

 

正常情况下,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工具,手动构建“强命名程序集”:

摘自 :编程世界一凡人

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • asp.net 设置GridView的选中行的实现代码
      • C#高级编程:数据库连接[1]
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET GridView列表代码示例
      • Asp.net MVC源码分析--Action Filter的链式调用
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1