分享
 
 
 

学习笔记《.NET框架程序设计(修订版)》--第三章 共享程序集 (2)

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

学习笔记《.NET框架程序设计(修订版)》--第三章 共享程序集 (2)

2004-12-29

3.4 引用强命名程序集

1、第二章里提到用 CSC.exe 的 /reference 命令行开关来指定期望引用的程序集文件名。如果文件名包含了完整路径,则 CSC.exe 加载指定路径下的文件。如果指定的是不带路径的文件,它将在以下目录中查找引用的程序集:

a、当前工作路径;

b、编译器目前使用的CLR所在的目录。MSCorLib.dll总是包含在该目录中(System.Object就定义在这个程序集中)。该目录类似于:

C:\Windows\Micorsoft.NET\Framework\v1.0.3427 ;

c、任何用CSC.exe的 /lib 命令行开关指定的目录;

d、任何LIB环境变量中指定的目录。

安装.NET框架时,微软的程序集文件会被分别拷贝到 CLR所在目录及 GAC目录中。在CLR所在目录中拷贝是使我们能够方便的生成自己的程序集;GAC中的拷贝则是用于运行时加载这些程序集。

CSC.exe 不在GAC 中查找所引用的程序集的原因是因为需要指定的路径比较麻烦。

2、响应文件(response file):是一个包含一组编译器命令行开关的文本文件。执行CSC.exe 命令时,编译器会打开响应文件,并象使用通用命令行传递的开关一样使用响应文件中指定的命令行开关。

例子:

一个响应文件MyProject.rsp 包含下列文本:

/out:MyProject.exe

/target:winexe

为了使CSC.exe利用这些设置,可以象这样调用:

csc.exe @MyProject.rsp CodeFile1.cs CodeFile2.cs

C#编译器支持多个响应文件。

运行CSC.exe时它会自动在当前目录中搜索一个本地的CSC.rsp文件;另外编译器还会在CSC.exe所在的目录中搜索一个全局的CSC.rsp文件。

本地响应文件和全局响应文件中的设置有冲突时,本地响应文件中的设置将覆盖全局响应文件的设置;类似的,显示传递给CSC.exe的设置也将覆盖本地响应文件中的设置。

CSC.rsp包含类似以下的命令行:

/r:Systme.dll

/r:Accessibility.dll

/r:System.Data.dll

等等;

需要的话我们也可以向CSC.rsp文件中添加自己的命令行开关。

3.5 强命名程序集的防篡改特性

1、用私有密钥为程序集签名可以确保该程序集的生产者为对应公有密钥的持有者:

a、当程序集被安装到GAC目录内时,系统将会对包含清单的文件内容进行散列转换,并用得到的散列值来和嵌入在PE文件中的RSA数字签名进行比较。如果相同证明程序集文件的内容没有被篡改,并且可以知道我们拥有着和发布者的私有密钥相对应的公有密钥;

b、系统会对程序集中其他文件的内容进行散列转换,然后将得到的散列值和清单文件中FileDef表内存储的散列值进行比较。如果发现有任何不匹配的情况,则证明至少有一个程序集的文件被篡改了。

2、当应用程序需要绑定一个程序集时,CLR将使用所引用的程序集的一些属性(名称、版本、语言文化及公有密钥)来在GAC中定位程序集。

如果找到被引用的程序集,它所在的子目录被返回,保存清单的那个文件将被加载。这样确保了运行时加载的程序集和编译时生成的程序集总时来自同一个发布者。

如果被引用的程序集不在GAC中:

b、CLR将在应用程序的基目录中查找,如果还没找到则

c、CLR将到应用程序的配置文件中标识的私有路径中查找

d、如果应用程序时使用MSI来安装的,CLR会要求MSI来定位程序集。

如果找不到程序集绑定失败系统抛出一个 System.IO.FileFoundException 异常。

当强命名程序集文件是从一个非GAC的地方加载时CLR会在程序集被加载的时候比较散列值(若是GAC中加载,则在程序安装时比较散列值?)。如果检测到散列值不匹配抛出 System.IO.FileLoadException 异常。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有