【问题标题】:Is it necessary to put the shared assembly in GAC only?是否有必要仅将共享程序集放在 GAC 中?
【发布时间】:2010-03-12 10:38:09
【问题描述】:

我想在两个项目之间共享一个 dll。

dll 是只需要放在 GAC 中还是可以放在任何文件夹中?

【问题讨论】:

    标签: .net assemblies gac


    【解决方案1】:

    我强烈建议将其保存在每个项目的 Bin 文件夹中。除非真的(真的)有必要,否则不要试图分享它。

    第二个最佳选择是放入一个共享文件夹(使用相对路径)并在每个项目配置文件 (Probing path) 中进行配置。请注意,您将始终必须同时更新 2 个项目。如果程序集包含用于在 2 个项目之间进行通信的类型,那么这是有道理的,否则就是不必要的复杂化。

    最后的选择是将其放入 GAC

    【讨论】:

      【解决方案2】:

      程序集加载器会在几个地方寻找程序集,其中之一是执行目录。

      这意味着您可以简单地复制到多个目录。

      请参阅 MSDN 上的 How the Runtime Locates Assemblies

      【讨论】:

        【解决方案3】:

        在您的情况下,我建议使用您的源代码控制系统来强制执行结构化共享,而不是 GAC。

        Subversion中的流程:

        1. 将共享库放在源存储库中的一个位置。
        2. 在您的两个项目中,每个项目都使用 svn:externals 来拉入共享库。

        这让你两全其美:

        • 源代码管理中的单个位置来更新共享库(如 GAC)
        • 私有 bin 文件夹部署的灵活性(例如不使用 GAC)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-23
          • 1970-01-01
          相关资源
          最近更新 更多