在 .NET Framework 全局程序集缓存中安装程序集

本文介绍如何在 Microsoft .NET Framework 全局程序集缓存中安装程序集.dll文件,并使用 Visual Studio 创建具有强名称的程序集。

原始产品版本: .NET Framework、Visual Studio
原始 KB 数: 910355

概要

若要在 .NET Framework 全局程序集缓存中安装程序集.dll文件,可以使用 .NET Framework SDK 全局程序集缓存工具。 还可以使用全局程序集缓存工具来验证程序集是否已安装在全局程序集缓存中。 若要完成此任务,你可能拥有安装共享程序集的计算机的管理员权限。 更重要的是,必须安装 .NET Framework SDK。

有关本文的 Visual C# .NET 版本,请参阅 如何将程序集安装到 Visual C# 中的全局程序集缓存中。

全局程序集缓存

.NET Framework 全局程序集缓存是代码缓存。 全局程序集缓存会自动安装在安装了 .NET Framework 公共语言运行时的每台计算机上。 计算机上安装的任何应用程序都可以访问全局程序集缓存。 全局程序集缓存存储被指定为由计算机上的多个应用程序共享的程序集。 组件程序集通常存储在 C:\WINNT\Assembly 文件夹中。

注释

仅当需要共享程序集时,才在全局程序集缓存中安装程序集。 除非显式需要共享程序集,否则我们建议将程序集依赖项保持为私有状态,并在应用程序目录中找到该程序集。 此外,无需在全局程序集缓存中安装程序集,以使程序集可用于Microsoft组件对象模型(COM)互操作或非托管代码。

程序集

程序集是使用 .NET Framework 进行编程的基本部分。 程序集是 .NET Framework 公共语言运行时应用程序的可重用自描述构建基块。

程序集包含公共语言运行时执行的一个或多个代码组件。 同一程序集中的所有类型和所有资源都构成了单元的各个版本。 程序集清单描述为任何依赖程序集指定的版本依赖项。 通过使用程序集,可以在不同的软件组件之间指定版本规则,并且可以在运行时强制执行这些规则。 程序集支持并行执行。 WHich 允许多个版本同时运行。

强名称签名

程序集必须具有强名称才可安装到全局程序集缓存中。 强名称是一个全局唯一的标识,不能被其他人欺骗。 通过使用强名称,可以阻止具有相同名称的组件相互冲突或被调用应用程序错误地使用。 程序集签名将强名称与程序集相关联。 程序集签名也命名为强名称签名。 强名称由以下信息组成:

  • 程序集的简单文本名称
  • 程序集的版本号
  • 有关程序集的区域性信息(如果提供此信息)
  • 公钥和私钥对

此信息存储在密钥文件中。 密钥文件是个人信息交换(.pfx)文件或当前用户的Microsoft Windows 证书存储中的证书。

可以使用 Visual Studio 中项目设计器的“签名”选项卡上的选项对程序集进行签名 在 Visual Studio 中,密钥文件必须存储在本地计算机上的项目文件夹中。 Visual Studio 仅支持以下文件格式:

  • 个人信息交换 (.pfx) 文件
  • 强名称键 (.snk) 文件

要求

在全局程序集缓存中安装程序集之前,可能满足以下要求:

  • 你必须拥有安装共享程序集的计算机的管理员权限。
  • 必须安装 .NET Framework SDK。

本文假定你熟悉以下主题:

  • 一般熟悉 .NET 中的共享程序集。
  • 一般熟悉在命令提示符下使用工具。

在全局程序集缓存中安装程序集

此方法基于如何使用 Visual Studio 创建程序集。 若要创建可由多个应用程序共享的程序集,共享程序集必须具有强名称。 此外,必须在全局程序集缓存中部署共享程序集。

若要创建具有强名称的小型 Visual C# 程序集,并在全局程序集缓存中安装已编译的.dll文件,请执行以下步骤:

  1. 创建名为 GACDemo 的新 Visual C# 类库项目。 要做到这一点,请遵循以下步骤:

    1. 启动 Visual Studio。
    2. 在“文件”菜单中,选择“新建项目”。
    3. “模板” 列表中,选择“ 类库”。
    4. “名称 ”框中,键入 GACDemo,然后选择“ 确定”。
    5. 若要保存项目,请按 Ctrl+Shift+S。
    6. “位置” 框中,键入 C:\DemoProjects
    7. 清除 “为解决方案 创建目录”复选框,然后选择“ 保存”。
  2. 生成强名称,然后将强名称密钥文件与程序集相关联。 要做到这一点,请遵循以下步骤:

    1. “项目 ”菜单上,选择 “GACDemo 属性”。

    2. 在“签名”选项卡上,选中“为程序集签名”复选框。

    3. 在“选择强名称密钥文件”下,选择“>”。

    4. “创建强名称密钥 ”对话框中,选中“ 使用密码 保护密钥文件”复选框。

    5. “密钥文件名 ”框中,键入 GACDemo

    6. “输入密码 ”框中,键入要使用的密码。

    7. “确认密码”框中,键入相同的密码 ,然后选择“ 确定”。

      注释

      建议在创建密钥文件时始终使用密码。 始终以 .pfx 文件格式创建受密码保护的新密钥文件。

    8. 若要编译项目,请按 Ctrl+Shift+B。

      注释

      在全局程序集缓存中安装.dll文件无需任何其他代码。

  3. 使用全局程序集缓存工具安装在全局程序集缓存中的步骤 2 中创建的.dll文件。 要做到这一点,请遵循以下步骤:

    1. 选择“ 开始”,选择“ 运行”,键入 cmd,然后选择“ 确定”。
    2. 将当前工作目录更改为安装 .NET Framework SDK 的目录。
    3. 在命令提示符下,键入 gacutil -I "C:\DemoProjects\GACDemo\bin\Release\GACDemo.dll" 命令,然后按 Enter。

验证程序集是否已安装在全局程序集缓存中

可以使用全局程序集缓存工具验证程序集是否已安装在全局程序集缓存中。 要做到这一点,请遵循以下步骤:

  1. 选择“ 开始”,选择“ 运行”,键入 cmd,然后选择“ 确定”。

  2. 将当前工作目录更改为安装 .NET Framework SDK 的目录。

  3. 若要显示有关 GACDemo 程序集的安装信息,请使用全局程序集缓存工具。 若要执行此操作,请在命令提示符处键入 gacutil -l GACDemo 命令,然后按 Enter。

    注释

    将显示有关 GACDemo 程序集的安装信息。

参考文献