将 DLL 安装到全局程序集缓存(GAC)
Posted guanshan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将 DLL 安装到全局程序集缓存(GAC)相关的知识,希望对你有一定的参考价值。
将 DLL 安装到全局程序集缓存(GAC)
引言
本文提供如何将 DLL 安装到全局程序集缓存(GAC)的简单示例。
你可能想这样做的原因有以下几个:
程序集的共享和版本控制
该组件可用于由一个以上的应用程序,可能需要不止一个版本的程序集。多个版本可以同时存在于 GAC 中。
安全性
GAC 放置在系统根中应用了多数的沙箱外安全特性。您不需要在多处放置它。
程序集查找
在查找本地文件夹之后在 GAC 中查找代码库信息。
开始
创建一个强名称密钥对:
首先,我们需要创建一个强名称密钥文件。 这将使用的命令格式为:sn –k <文件名与位置>。 下面是一个示例。 创建了一个包括公钥与私钥的密钥对。
使用 Visual Studio 对程序集进行签名
给程序集签名非常简单 - 你也可能使用较麻烦的程序集链接器,但那完全没必要。右键点击解决方案资源管理器中的项目节点,选择属性。在“签名”(Signing)的选项卡中勾选“为程序集签名”(Sign the assembly)。在下面的下面列表中选择您的密钥文件。在这个示例中,我已经将密钥文件复制到了与 ReportingUtilitites DLL 生成相同的 bindebug 文件夹中。
安装到 GAC
现在我们有了一个已签名可安装到 GAC 的程序集。 运行 Visual Studio 命令提示 (在 visual studio tools 中) 并写下面的指令: gacutil –I <程序集名称 >。 在本示例中我将当前命令提示文件夹定位到了 DLL 所在文件夹 - 您可以也这么做或是在程序集名称里输入完整路径。
在 MSI 中安装程序集到 GAC
在产品环境中,现实情况是,你没有安装 Visual Studio 环境。
不用担心。 安装一个 DLL 到 GAC 仍然很简单 - 你只需要创建一个部署项目。
在 Visual Studio 中添加一个新的部署项目到您的解决方案中。
- 选择一个标准安装程序 - 无向导。
- 右键点击项目节点,选择视图,文件系统。
- 右键点击“目标计算机上的文件系统”(File System on target machine) 选择 “Global Assembly Cache 文件夹”(GAC)
- 右键点击生成的 GAC 文件夹选择“项目输出”(Project Output)中的 Dll 项目下的主输出(primary output)。 确保您在下拉列表中选择了正确的项目!
该项目也将增加.NET框架的启动条件。 确保该版本设置的版本将是在目标机器上,因为它会默认为您的开发机器上的最新版本 (这可能是更高的)。
更改版本:
- 右键点击项目节点选择视图中的“启动条件”(launch conditions)
- 在启动条件中选择 .Net Framework
- 选择属性面板。您可能需要重新选择启动条件,以突出显示正确的属性。它应该如下:
现在你可以生成你的项目并复制文件到您需要安装 DLL 的环境中了。
以上是关于将 DLL 安装到全局程序集缓存(GAC)的主要内容,如果未能解决你的问题,请参考以下文章
[转]程序集之GAC---Global Assembly Cache