是否有必要将共享程序集放在GAC中?

时间:2010-03-12 10:38:10

标签: .net assemblies gac

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

是否有必要将dll放在GAC中,还是可以将其放在任何文件夹中?

3 个答案:

答案 0 :(得分:2)

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

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

最后一个选项是将其放入GAC

答案 1 :(得分:1)

程序集加载程序将在多个位置查找程序集,其中一个是执行目录。

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

请参阅MSDN上的How the Runtime Locates Assemblies

答案 2 :(得分:1)

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

Subversion中的过程:

  1. 将共享库放在源存储库中的单个位置。
  2. 在您的两个项目中,使用svn:externals来拉入共享库。
  3. 这为您提供了两全其美的优势:

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