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# 泛型的逆变与协变
    C# 元组
    DNS服务原理与搭建自己的DNS服务器
    浅析DNS域名解析过程
    Python turtle.circle()函数
    Python 实现点名系统
    PyCharm Debugger中Step Over、Step Into、Step Into My Code、Force Step Into、Step Out、Run to Cursor意思区别
    TypeScript与JavaScript比较(区别)
    微信小程序开发环境搭建
    Windows.edb 文件占据巨大的硬盘存储空间
  • 原文地址:https://www.cnblogs.com/renzhoushan/p/10394706.html
Copyright © 2011-2022 走看看