第一讲 应用程序的执行
微软为什么要用.NET Framework ,原因只有一点,就是为它的各个操作系统产品,找一个中间件,在移植和安全性方面得到统一。不过有一点是肯定的,速度慢了许多,这也是.net程序员最不爽的事。
在Common Language Runtime(运行时环境)中运行的程序都是授控的程序,C#程序员有一个方便的好处就是不用像C++程序员哪样要考虑很多内存垃圾清理的工作,这一切都由CLR自动完成。编程方便了很多,但也不知道了很多细节!
现在的编程序是基于组件的编程序,程序包含一个或多个组件(dll)组成。在.net环境中称为Assembly。一个Assembly是一个或多个源文件编译结果。在Assembly中可以包括我们自己写的类,也可以包括Framework Class Library。和一切可以引用的类。
*部署软件的时候就是部署Assembly。
安装到.EXE所在的文件夹中
最简便,也称作 xcopy deployment
将一部分安装到.EXE所在的文件夹中,另一部分在GAC中
GAC 允许你共享、安装多个版本
通过配置文件自定义部署
可以自定义安装位置,例如安装到某台服务器上
“Zero-touch” 部署
通过URL安装: http://server/app/app.exe
应用程序可以定期自动更新
在VS 2005中进化为ClickOnce部署
*应用程序在哪里找Assembly,这里有一个算法。
应用程序(.EXE)指定将要使用的assembly版本
在GAC(Global Assembly Cache)中搜索相应版本
If 未找到 and 存在.config文件 then
到配置文件指定的位置搜索
else 到.EXE文件所在的路径搜索
If 未找到 then
发生错误,程序终止
*NET如何发现的版本信息?
.net把mannifest编译到.DLL/.EXE中
可以通过ILDASM工具查看
ILDASM = Intermediate Language Disassembler
Manifest中存储了版本,依赖关系等信息
ildasm是.net的汇编语言工具。在SDK Tools中找!