使用程序集和全局程序集缓存
注意
本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。
如果需要在几个应用程序间共享程序集,可将其安装到全局程序集缓存中。 安装了公共语言运行时的每台计算机均具有此计算机范围的代码缓存。 全局程序集缓存中存储专门指定给由计算机中若干应用程序共享的程序集。 程序集必须具有强名称才可安装到全局程序集缓存中。
注意
全局程序集缓存中放置的程序集必须具有相同的程序集名称和文件名(不包括文件扩展名)。 例如,程序集名称为 myAssembly 的程序集必须具有名为 myAssembly.exe 或 myAssembly.dll 的文件。
只能在需要时才通过将程序集安装到全局程序集缓存中来共享程序集。 一般原则是:程序集依赖项保持专用,并在应用程序目录中定位程序集,除非明确要求共享程序集。 另外,无需为了使程序集可以访问 COM 互操作或非托管代码而将程序集安装到全局程序集缓存。
建议将程序集安装到全局程序集缓存中的原因有以下几点:
共享位置。
应该由应用程序使用的程序集可以置于全局程序集缓存。 例如,如果所有应用程序都应使用位于全局程序集缓存中的程序集,则可将版本策略语句添加到 Machine.config 文件中,此文件将引用重新定向到程序集。
文件安全。
管理员通常使用访问控制列表 (ACL) 来保护 systemroot 目录,从而控制写入和执行访问。 由于全局程序集缓存安装在 systemroot 目录中,因此它将继承该目录的 ACL。 建议只允许具有“管理员”权限的用户从全局程序集缓存中删除文件。
并行版本。
可在全局程序集缓存中维护名称相同但版本信息不同的程序集的多个副本。
其他搜索位置。
在探测或使用配置文件中的基本代码信息之前,公共语言运行时会先检查全局程序集缓存中符合程序集请求的程序集。
请注意,在有些情况下,很明显不需要将程序集安装到全局程序集缓存中。 如果将组成应用程序的某个程序集置于全局程序集缓存中,就无法再通过使用 XCOPY 复制应用程序目录来复制或安装应用程序。 在这种情况下,还必须将程序集移到全局程序集缓存中。
本节内容
如何:将程序集安装到全局程序集缓存 描述将程序集安装到全局程序集缓存的方法。
如何:查看全局程序集缓存的内容 说明如何使用 Gacutil.exe(全局程序集缓存工具)查看全局程序集缓存的内容。
如何:从全局程序集缓存中删除程序集 说明如何使用 Gacutil.exe(全局程序集缓存工具)从全局程序集缓存中删除程序集。
将服务组件和全局程序集缓存结合使用 说明为何应将服务组件(托管 COM+ 组件)置于全局程序集缓存中。
相关章节
创建程序集 概述如何创建程序集。
全局程序集缓存 介绍全局程序集缓存。
如何:查看程序集内容 说明如何使用 Ildasm.exe(IL 反汇编程序)查看程序集中的公共中间语言 (CIL) 信息。
运行时如何定位程序集 描述公共语言运行时如何查找和加载构成应用程序的程序集。
使用程序集编程 描述托管应用程序的构造块 - 程序集。