zoukankan      html  css  js  c++  java
  • 共享程序集和强命名程序集(2):全局程序缓存和引用

    知道如何创建强命名程序集之后,要学习如何部署,以及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代码,因为仅在运行时才需要代码。

  • 相关阅读:
    C++对象模型与内存位对齐的简单分析(GNU GCC&VS2015编译器)
    [GeekBand] C++学习笔记(2)——BigThree、OOP
    [GeekBand] C++ 高级编程技术 (1)
    [GeekBand]C++高级编程技术(2)
    C++中引用的本质分析
    函数的重载(1)
    C++的特点
    布尔类型和三目运算符
    Linux客户端下的latex相关操作
    无光驱上网本上安装win7
  • 原文地址:https://www.cnblogs.com/renzhoushan/p/10394706.html
Copyright © 2011-2022 走看看