如果计划在 Web 服务器上的两个或多个应用程序之间共享组件,则必须将组件部署到服务器上被称为全局程序集缓存的计算机范围代码缓存中。安装了公共语言运行库的每一台计算机都具有全局程序集缓存。全局程序集缓存存储了计算机上几个应用程序所共享的程序集。详细信息,请参阅 .NET Framework 帮助中的“全局程序集缓存”主题。
仅当需要时才通过将程序集安装到全局程序集缓存的方式来共享它们。一般指导原则是保持程序集依存关系的专用性,并将其放置在应用程序的目录中,除非明确需要共享程序集。程序集不必位于全局程序集缓存中以供 COM interop 或非托管代码进行访问。
注意 在有些方案中,不应该将程序集安装到全局程序集缓存中。如果将组成应用程序的某个程序集放到全局程序集缓存中,您将不能再通过 XCOPY 工具复制应用程序目录的方法来复制或安装应用程序。您还必须移动全局程序集缓存中的程序集。
有两种方法可以将程序集安装到全局程序集缓存中。
这是推荐的、最通用的将程序集添加到全局程序集缓存中的方法。安装程序提供了全局程序集缓存中的程序集引用计数以及其他优点。只有当安装到开发或测试服务器时,才不应使用安装程序。
可以使用 Gacutil.exe 将具有强名称的程序集添加到全局程序集缓存中,并查看全局程序集缓存中的内容。
注意 Gacutil.exe 仅用于开发目的,不应被用于将程序集产品安装到全局程序集缓存中。
详细信息,请参阅 .NET Framework 帮助中的“全局程序集缓存工具 (Gacutil.exe)”主题。
将具有强名称的程序集安装到全局程序集缓存中
gacutil –i <assemblyname>
注意 在该命令中,assembly name 是要安装到全局程序集缓存中的程序集名称。
下面的示例将具有文件名 Hello.dll 的程序集安装到全局程序集缓存中。
gacutil -i Hello.dll
.NET Framework SDK 也提供了名为“程序集缓存查看器”(Shfusion.dll) 的 Windows 命令行解释器扩展,可以用来将程序集拖放进全局程序集缓存中。