代码之家  ›  专栏  ›  技术社区  ›  Jagd Dai

去GAC,还是不去GAC?

  •  9
  • Jagd Dai  · 技术社区  · 15 年前

    我有一个用ASP.NET 3.5编写的数据访问层(DAL),它使用Microsoft模式和实践库(以下简称P&P)来完成数据访问。我安装了P&P,它驻留在我的GAC中,因此,逻辑上, 我的DAL在GAC中提到过 . 因此,P&P库永远不会被拉到我的DAL的bin文件夹中。

    我至少在五个不同的网站上使用了这个DAL项目(甚至比这还要多,但我太懒惰了,不想把它们都计算在内)。这一切对我来说都很好,因为我是在这些网站上工作的唯一开发者。

    但是,现在我有其他的开发人员要在这些网站上工作。

    问题是: 如果开发人员将DAL项目从我们的代码库中拉下来,如果他们没有安装P&P库,就不会为他们构建。

    我的问题: 我应该期望开发人员安装P&P库,还是应该将它们转储到bin文件夹中并完成它?

    我意识到把它们放进bin文件夹可能是解决这个问题的最简单的方法,但是如果我能在gac中引用它们的话,我从来都不是bin文件夹的忠实粉丝。

    3 回复  |  直到 15 年前
        1
  •  9
  •   Dan Story    15 年前

    这在很大程度上是您特定工作组的风格偏好。我倾向于像打包客户端应用程序那样打包网站:在bin文件夹中包含所有必需的非.NET框架二进制文件,假设它们复制到/安装到的任何计算机在GAC中都没有任何内容。我的工作团队将第三方程序集作为二进制文件签入到源代码管理中,并标记为引用依赖项,这样每个人都可以使用相同的二进制文件在同一个页面上工作,而且我们不必担心开发人员机器之间的安装差异。

    GAC可能是一种方便的节省空间的机制,但我更喜欢“内联”文件提供的开发人员环境之间的一致性。

        2
  •  1
  •   Anthony    15 年前

    在过去处理过与GAC相关的项目之后,它总是令人困惑,并且很难正确配置项目,导致各种各样的延迟才刚刚开始。随着DAL的新版本的开发,这可能会成为一个更大的问题。当你在索罗的时候,这可能很有效,但我会考虑到垃圾桶,因为你有一个更大的团队。

        3
  •  0
  •   Nix    15 年前

    我认为你应该给他们两种选择。

    对于懒惰的,提供PP DLL和签名的DAL DLL。对于经验更丰富的用户,只需确保他们知道他们需要P&P,并且对DLL的任何更改都需要GACCED。

    我总是喜欢共享库被gac'ed,特别是在服务器端。对于客户,我通常喜欢用垃圾箱包装。