共享程序集和强命名程序集(2):全局程序缓存和引用

本文介绍如何创建及部署强命名程序集,详细解释CLR如何定位并加载程序集。涉及GACUtil.exe的使用,程序集引用的处理方式,以及GAC与编译器/CLR目录中程序集的区别。

知道如何创建强命名程序集之后,要学习如何部署,以及CLR如何利用信息定位并加载程序集(GAC)。GAC的具体位置会随着不同版本变化。

开发和测试时可以使用GACUtil.exe。路径是"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"。可以查看用法:

使用/i开关将程序集安装到GAC,/u开关从GAC卸载程序集。

在生成的程序集中引用强命名的程序集

你生成的任何程序集都包含对其他强命名程序集的引用,这是因为System.Object在MSCorLib.dll中定义,而后者是强命名的程序集。此外,程序集还可以引用由Microsoft、第三方厂商或者自己公司发布的其他强命名程序集。可以使用CSC.exe的/reference编译器开关指定想引用的程序集文件名。

如果文件名是完整路径,CSC.exe就会加载指定文件,并根据元数据生成程序集。如果是不包含路径的文件名,CSC.exe会尝试在以下路径寻找程序集(按顺序):

1.工作目录

2.CSC.exe所在目录

3.使用/lib编译器开关指定的任何目录

4.使用LIB环境变量指定的任何目录。

在安装.NET Framework时,实际会安装Microsoft的程序集文件的两套拷贝。一套安装到编译器/CLR目录,另一套安装到GAC的子目录。编译器/CLR目录中的文件方便生成程序集,GAC中的拷贝方便在运行时加载。

除此之外,编译器/CLR目录中的程序集不依赖机器。也就是说,这些程序集只包含元数据。因为编译的时候不需要IL代码,所以该目录不必同时包含程序集的x86、x64和ARM版本。GAC中的程序集才能同时包含元数据和IL代码,因为仅在运行时才需要代码。

转载于:https://www.cnblogs.com/renzhoushan/p/10394706.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值