将 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 的环境中了。

原文地址:https://www.cnblogs.com/guanshan/p/guan2020-6-10_002.html