【问题标题】:How can I configure my Setup Project to add an assembly to the GAC during the installation process?如何配置我的安装项目以在安装过程中将程序集添加到 GAC?
【发布时间】:2011-07-08 16:34:23
【问题描述】:

首先,我知道 why 它没有出现在“添加引用”对话框中。我也知道如何manually添加它。

我想知道的是我应该如何更改我的 安装项目(在 Visual Studio 中),以便程序集出现在“添加引用”对话框中。我应该添加新的目标位置还是自定义操作或其他内容?

我目前只是将“主要输出”放在“全局程序集缓存文件夹”中

【问题讨论】:

  • 对不起,但如果你知道答案..那么问题是什么?举个例子让我们更清楚。
  • 问题是我在 Visual Studio 设置项目的实践中是如何做到的。是“添加自定义操作”、新的目标位置还是其他?

标签: .net visual-studio-2010 assemblies gac setup-project


【解决方案1】:

您修改安装项目以在安装时创建必要的注册表项并在卸载时将其删除。

请注意,理想情况下,您还需要将程序集部署到“正确”的安装文件夹,然后将该部署文件夹用作 AssemblyReferences 键的目标文件夹 - 与 Microsoft 部署 Reference Assemblies 文件夹的方式相同它的组成部分。

更新

这是我为您准备的演示 VS2010 解决方案的链接:https://docs.google.com/leaf?id=0Bw_NnV9fhgmgNGE0N2JjYWYtNmVlNC00YjZhLWJlMGMtMDAyMTllYzU4Y2Fi&hl=en&authkey=CPTv8bUI,它将完全满足您的需求。

构建并运行安装项目后,“AddReferenceDemo”程序集将出现在“添加引用”对话框的“Assemblies\Extensions”选项卡中。

这是我的构建方式:

  • 将主要输出添加到文件系统视图中的“应用程序文件夹”。

  • 将主要输出添加到“全局程序集缓存文件夹”特殊文件夹(可选 - 仅当您也希望 GAC 中的文件时)

  • 在注册表查看器中,使用 UI 添加键 Software\Microsoft\.NetFramework\v4.0.30319\AssemblyFoldersEx\[ProductName](您必须创建每个键)。此处的[ProductName]逐字使用,因为它是设置项目属性中设置的产品名称的快捷方式。

  • 在其下添加一个默认字符串值(即无名称),其值为 [TARGETDIR] - 再次逐字复制。请注意,这最终将设置为用户在运行安装程序时选择的任何安装文件夹。

构建并运行安装程序。

此外,新的注册表项在卸载时永远不会被删除,即使您将其标记为这样。可能该值也需要标记为删除。

请注意,安装程序应标记为“x86”目标平台,以便根据目标平台的位数使用正确的注册表节点(软件或软件\Wow6432Node)。是否部署 x64 程序集无关紧要 - 这是您在此处设置的安装程序的位数,它会影响注册表等的视图。

希望对您有所帮助。

【讨论】:

  • 嗯,是的。我知道。但我很讨厌视觉工作室的设置项目。我想知道我在项目中是如何做到的,而不是理论上。
  • @jgauffin - 我为您提供 VS2010 的解决方案、演练和演示。查看更新的答案
【解决方案2】:

添加引用对话框(无论是来自 Productivity Power Tools 的原始版本还是增强版本)不会在 GAC 中搜索程序集。

而是搜索在注册表中多个位置之一指定的文件夹(取决于 .NET 框架版本和配置文件)。

例如。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0\AssemblyFoldersEx

但是我认为关于搜索哪些文件夹的规则没有明确定义,因此可能需要进行一些试验和错误。

【讨论】:

  • 我更新了问题并试图更清楚地说明我想要什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多