分享
 
 
 

学习笔记《.NET框架程序设计(修订版)》--第二章 生成、打包、部署及管理应用程序与类型(1)

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

(这一章内容还是挺多,加上本人耐心有限,把这章也分两部分整理。不知道有没有朋友在看我的笔记,急性子的朋友就将就一点吧)

2.1 .NET框架部署目标

这一节里作者主要讲了为什么“多年来,Windows一直背负着一个复杂和不稳定的坏名声”。而.NET的部署目标就是想克服这些不足之处:

1、公司升级原来的代码复杂,它必须保证“向下兼容”,这得花费大量的时间进行测试,而且结果效果也难说;

2、就是著名的“DLL hell”(DLL 地狱),当你在机器上安装新的应用程序时,会顺坏原有的应用程序,就时通常说的冲突;(前两天就有个同事的XP机器上一装瑞星就开不了,瑞星以前冲突的机会还是很小的)

3、安装过程复杂。大多应用程序的安装都会影响到系统的各个部分。无论程序员打包程序、安装及从机器上删除都是很令人烦恼;(这个体会人人都有吧,最恨的就是删除不彻底,垃圾文件太多)

4、安全问题。最突出的问题就是“Web应用程序”在用户意识不到的情况下就被安装到机器里(木马,就是木马,还有那个什么“不管三七等于什么”的那个网站也让人……。印象中.NET中的Web页中如果没有和客户端的交互是不可能操作本地文件的,这样是个解决方案)

2.2 将类型生成为模块

1、例子:

public class App {

static public void Mian(System.String[] args) {

System.Console.WriteLine(“Hi”);

}

}

程序定义了自己的一个类型(App),同时使用了微软.NET的类型(System.Console)。上面是一个C#程序,生成应用程序执行下面的命令(假如加码的源文件是App.cs)(今天看见CSDN里有人讨论它的读法“C井”,我觉得不好听,微软提供的标准读法是C-Sharp,我倒认为“C叉”比较顺口,习惯了)(cs好像很吃香,编程可以碰到,游戏里又有):

csc.exe /out:App.exe /t:exe /r:MSCorLib.dll App.sc

解释:

/out:App.exe――告诉编译器生成的可执行文件名,默认时也是生成这个文件;

/t:exe――生成的文件类型为Win32控制台应用程序CUI(/t[arget]:exe);windows里支持GUI和CUI。不代此参数时生成的就是 CUI,也可以用“/t:winexe”生成GUI;

/r:MSCorLib.dll――因为例子中引用的类System.Console包含在“MSCorLib.dall”文件里头,/r[eference]:MSCorLib.dall就是让编译器到 / MSCorLib.dll 文件标识的程序集中查找用到的外部类型。MSCorLib.dll是非常特殊的一个文件,所以C叉编译器会自动应用该程序集;

从上面分析上面的命令也可以写成:

csc.exe App.sc

看过第一章上半部分的朋友应该知道,这里生成的就是一个PE文件。

2、PE文件中的元数据,它包含三类表:定义表、应用表和清单表。下面说明一下前两者,

a.常见的元数据定义表:(自己定义的类的 信息)

ModuleDef――包含一个托管模块的条目。条目包括模块的文件名和扩展名(不含路径)、一个模块版本ID (如 app.exe);

TypeDef――包含托管模块中定义的每一个类型(如类型app);

MethodDef――包含托管模块中定义的每一个方法,(每个方法条目都包含一个指向ParamDef表对应条目);

FieldDef――包含托管模块中定义的每一个字段;

ParamDef――包含托管模块中定义的每一个参数;

PropertyDef――包含托管模块中定义的每一个属性;

EventDef――包含托管模块中定义的每一个事件;

b.常见的元数据应用表: (引用别人定义的类的信息)

AssemblyRef――包含托管模块引用的每一个程序集。每个条目包括绑定程序集所必需的信息:程序集名称(不包含扩展名)、版本号、语言文化和共有密钥标记,还包括一些标记和一个散列值。(这些名词这里看得糊没关系,书的后面还会详细讲到);

ModuleRef――托管模块有时引用到的在同一程序集其他不同模块内的类型,它就包含了这些模块的信息;

TypeRef――包含托管模块引用的每一个类型的信息,每个条目包括类型的名称和一个指向类型所在位置的指针;

MemberRef――包含托管模块引用的每一个成员的信息,每个条目包括成员的名称,成员的签名,以及指向TypeRef表中对应条目的指针;

要查看托管PE文件中的元数据可以用ILDasm.exe:ILDasm /Adv App.exe

(每次重新回来整理看过的内容都有新的收获,上一次看不懂的地方第二次过来就懂了,书后面不明白的地方回头看看就明了。作者的书最大的特点是:书的后面是对前面的深入)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有