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

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

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

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

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

你生成的任何程序集都包含对其余强命名程序集的引用,这是由于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代码,因此该目录没必要同时包含程序集的x8六、x64和ARM版本。GAC中的程序集才能同时包含元数据和IL代码,由于仅在运行时才须要代码。

相关文章
相关标签/搜索