使用程序集和全局程序集缓存

如果您需要在几个应用程序间共享程序集,可将其安装到全局程序集缓存中。 安装了公共语言运行时的每台计算机均具有此计算机范围的代码缓存。 全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集。 要安装到全局程序集缓存中,程序集必须具有强名称。

注意注意

全局程序集缓存中放置的程序集必须具有相同的程序集名称和文件名(不包括文件扩展名)。例如,程序集名称为 myAssembly 的程序集必须具有名为 myAssembly.exe 或 myAssembly.dll 的文件。

应当只在必要时才将程序集安装到全局程序集缓存中来共享程序集。 一般原则是:程序集依赖项保持专用,并在应用程序目录中定位程序集,除非明确要求共享程序集。 另外,您不必为了使 COM 互操作 或非托管代码可以访问程序集而将程序集安装到全局程序集缓存。

要将程序集安装到全局程序集缓存中的原因有以下几点:

  • 共享位置。

    可将应用程序应该使用的程序集放在全局程序集缓存中。 例如,如果所有的应用程序都应使用位于全局程序集缓存中的程序集,则可将版本策略语句添加到 Machine.config 文件(此文件将引用重新定向到程序集)。

  • 文件安全性。

    管理员通常使用访问控制列表 (ACL) 来保护 systemroot 目录,以控制写入和执行访问。 因为全局程序集缓存安装在 systemroot 目录中,它继承了该目录的 ACL。 建议只允许具有“管理员”权限的用户从全局程序集缓存中删除文件。

  • 并行版本控制。

    可在全局程序集缓存中维护程序集的多个副本(名称相同但版本信息不同)。

  • 其他搜索位置。

    在探测或使用配置文件中的基本代码信息之前,公共语言运行时会先检查全局程序集缓存中符合程序集请求的程序集。

请注意,在有些情况下,您肯定不需要将程序集安装到全局程序集缓存中。 如果将组成应用程序的某个程序集放在全局程序集缓存中,就无法再通过使用 XCOPY 复制应用程序目录来复制或安装应用程序。 在这种情况下,还必须将程序集移到全局程序集缓存中。

本节内容

相关章节