NET Framework 框架设计 第二章

时间:2025-02-22

.NET Framework 设计基础

第二章 生成、打包、 部署及管理应用程序 与类型

.NET Framework 设计基础

2.1 .NET框架部署目标 .NET框架部署目标“多年来,Windows一直背负着一个复杂和 多年来,Windows一直背负着一个复杂和 不稳定的坏名声”。而.NET的部署目标就 不稳定的坏名声”。而.NET的部署目标就 是想克服这些不足之处: 1、公司升级原来的代码复杂,它必须保证 “向下兼容”,这得花费大量的时间进行 向下兼容” 测试,而且结果效果也难说; 2、就是著名的“DLL hell”(DLL 地狱),当 、就是著名的“ hell” 地狱) 你在机器上安装新的应用程序时,会损坏 原有的应用程序,就是通常说的冲突;

.NET Framework 设计基础

3、安装过程复杂。大多应用程序的安装都 会影响到系统的各个部分。无论程序员打 包程序、安装及从机器上删除都是很令人 烦恼;(删除不彻底,垃圾文件太多) 4、安全问题。最突出的问题就是“Web应 、安全问题。最突出的问题就是“Web应 用程序” 用程序”在用户意识不到的情况下就被安 装到机器里(比如木马,.NET中的Web页 装到机器里(比如木马,.NET中的Web页 中如果没有和客户端的交互是不可能操作 本地文件的,这样是个解决方案)

.NET Framework 设计基础

2.2 将类型生成为模块例子: Public Class App { static public void Mian(System.String[] args){ System.Console.WriteLine(“Hi” System.Console.WriteLine(“Hi”); } } 程序定义了自己的一个类型(App),同时 程序定义了自己的一个类型(App),同时 使用了微软.NET的类型(System.Console) 使用了微软.NET的类型(System.Console) 生成应用程序执行下面的命令

.NET Framework 设计基础

csc.exe /out:App.exe /t:exe /r:MSCorLib.dll App.cs 解释: /out:App.exe――告诉编译器生成的可执行文件名,默认时也是生成这 /out:App.exe――告诉编译器生成的可执行文件名,默认时也是生成这 个文件; /t:exe――生成的文件类型为Win32控制台应用程序CUI /t:exe――生成的文件类型为Win32控制台应用程序CUI (/t[arget]:exe);windows里支持GUI和CUI。不代此参数时生成的就是 /t[arget]:exe);windows里支持GUI和CUI。不代此参数时生成的就是 CUI,也可以用“/t:winexe”生成GUI; CUI,也可以用“/t:winexe”生成GUI; /r:MSCorLib.dll――因为例子中引用的类System.Console包含在 /r:MSCorLib.dll――因为例子中引用的类System.Console包含在 “MSCorLib.dall”文件里头,/r[eference]:MSCorLib.dall就是让编译器到 MSCorLib.dall”文件里头,/r[eference]:MSCorLib.dall就是让编译器到 / MSCorLib.dll 文件标识的程序集中查找用到的外部类型。 MSCorLib.dll是非常特殊的一个文件,所以编译器会自动应用该程序集; MSCorLib.dll是非常特殊的一个文件,所以编译器会自动应用该程序集; 从上面分析上面的命令也可以写成: csc.e

xe /out:App.exe /t:exe App.cs甚至csc.exe App.cs App.cs甚至csc.exe 应该知道,这里生成的就是一个PE文件。 应该知道,这里生成的就是一个PE文件。

.NET Framework 设计基础

PE文件中的元数据,它包含三类表:定义表、引用表和清单表。下 PE文件中的元数据,它包含三类表:定义表、引用表和清单表。 文件中的元数据 面说明一下前两者, a.常见的元数据定义表:(自己定义的类的 信息) a.常见的元数据定义表 常见的元数据定义表: ModuleDef――包含一个托管模块的条目。条目包括模块的文件名和扩 ModuleDef――包含一个托管模块的条目。条目包括模块的文件名和扩 展名(不含路径)、一个模块版本ID 展名(不含路径)、一个模块版本ID (如 app.exe); app.exe); TypeDef――包含托管模块中定义的每一个类型(如类型app); TypeDef――包含托管模块中定义的每一个类型(如类型app); MethodDef――包含托管模块中定义的每一个方法,(每个方法条目 MethodDef――包含托管模块中定义的每一个方法,(每个方法条目 都包含一个指向ParamDef表对应条目); 都包含一个指向ParamDef表对应条目); FieldDef――包含托管模块中定义的每一个字段; FieldDef――包含托管模块中定义的每一个字段; ParamDef――包含托管模块中定义的每一个参数; ParamDef――包含托管模块中定义的每一个参数; PropertyDef――包含托管模块中定义的每一个属性; PropertyDef――包含托管模块中定义的每一个属性; EventDef――包含托管模块中定义的每一个事件; EventDef――包含托管模块中定义的每一个事件;

.NET Framework 设计基础

常见的元数据引用表: 常见的元数据引用表: (引用别人定义的类的信息) AssemblyRef――包含托管模块引用的每一个程序集。每个 AssemblyRef――包含托管模块引用的每一个程序集。每个 条目包括绑定程序集所必需的信息:程序集名称(不包含 扩展名)、版本号、语言文化和共有密钥标记,还包括一 些标记和一个散列值。 ModuleRef――托管模块有时引用到的在同一程序集其他不 ModuleRef――托管模块有时引用到的在同一程序集其他不 同模块内的类型,它就包含了这些模块的信息; TypeRef――包含托管模块引用的每一个类型的信息,每个 TypeRef――包含托管模块引用的每一个类型的信息,每个 条目包括类型的名称和一个指向类型所在位置的指针; MemberRef――包含托管模块引用的每一个成员的信息,每 MemberRef――包含托管模块引用的每一个成员的信息,每 个条 …… 此处隐藏:2992字,全部文档内容请下载后查看。喜欢就下载吧 ……

NET Framework 框架设计 第二章.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219