知道如何创建强命名程序集之后,要学习如何部署,以及CLR如何利用信息定位并加载程序集(GAC)。GAC的具体位置会随着不同版本变化。
开发和测试时可以使用GACUtil.exe。路径是"C:Program Files (x86)Microsoft SDKsWindowsv7.0ABin"。可以查看用法:
使用/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代码,因为仅在运行时才需要代码。