【问题标题】:Programmatically add a strong named assembly to the GAC以编程方式将强命名程序集添加到 GAC
【发布时间】:2009-08-12 11:33:12
【问题描述】:

是否可以使用 C# 代码以编程方式向 GAC 添加强命名程序集?

谢谢

【问题讨论】:

    标签: c# .net assemblies gac


    【解决方案1】:

    这篇 Microsoft 支持文章 How to install an assembly into the Global Assembly Cache in Visual C# 应该解释您需要知道的所有内容。

    这通常是由安装程序执行的任务,因此我不确定您为什么要在 .NET 程序中执行此操作(除非我误解了您的问题)。但是,您可以像安装程序一样简单地使用System.Diagnostics.Process 类来运行所有必要的程序。

    【讨论】:

    • 好的,我将使用 gacutil 实用程序将程序集添加到 Gac 中。我认为可能能够使用 API 将程序集添加到 GAC 中。谢谢
    • 没问题。是的,我非常怀疑是否有一个库/API 可以为您执行此操作。但是,该任务很简单,可以使用命令行工具。
    • 澄清一下,安装程序(由 VS 生产)是否会自动将我命名错误的程序集安装到 GAC?
    【解决方案2】:

    全局程序集缓存通过类似 COM 的接口 (http://support.microsoft.com/default.aspx?scid=kb;en-us;317540) 进行配置。

    对于有关 GAC 的所有问题,Jungfen Zhang 的博客是首选来源。 http://blogs.msdn.com/junfeng/articles/229648.aspx
    http://blogs.msdn.com/junfeng/articles/229649.aspx

    有关更多信息,请搜索“托管 GAC API”。

    Gacutil.exe 仅用于开发 目的,不应用于 将生产组件安装到 全局程序集缓存。

    [Microsoft 安装程序] 是推荐的 以及添加程序集的最常用方法 到全局程序集缓存。这 安装程序提供引用计数 全局程序集中的程序集 缓存,以及其他好处。

    【讨论】:

      【解决方案3】:

      只需调用gacutil 命令

      gacutil /i mydll.dll
      

      【讨论】:

      • gacutil 是一个 SDK 命令,可能无法在用户的机器上使用
      • 我大概可以把它打包成一个资源..提取它并运行它..正确吗?
      • 是的,您可以将 GACUTIL.EXE 与您的安装包捆绑在一起
      • 我不会发布可能适合也可能不适合目标机器上框架的 gacutil 版本。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多