代码之家  ›  专栏  ›  技术社区  ›  lomaxx

使用公共/实用程序库

  •  3
  • lomaxx  · 技术社区  · 16 年前

    在我工作的公司里,我们有一个“实用程序”项目,我们构建的几乎所有应用程序都引用这个项目。它有很多东西,比如nullhelpers、configsettinghelpers、常见的扩展方法等。

    我们的工作方式是,当我们想要创建一个新项目时,我们从源代码管理中获取该项目的最新版本,将其添加到解决方案中,然后从添加到解决方案中的任何新项目中引用该项目。

    这是可行的,但是也有一些例子,人们对共同的项目进行了“破坏性的改变”,这对他们来说是可行的,但对其他人来说是行不通的。

    我一直在想,与其将公共库添加为项目引用,不如开始将公共库作为独立的dll开发,发布不同的版本,并针对特定项目确定特定的版本,这样就可以在不危及使用公共库的其他项目的情况下进行更改。

    说了这么多,我有兴趣看看其他人如何引用或使用他们的公共库。

    3 回复  |  直到 8 年前
        1
  •  5
  •   Sandesh    8 年前

    这正是我们要做的。我们有一个实用程序项目,它具有一些非特定于项目的有用功能。我们手动增加版本(次要),在发布版本中构建项目,对其进行签名并将其放置到共享位置。

    然后人们使用 图书馆 .

    如果在某些特定的项目中实现了一些有用的方法,这些方法可以找到进入主实用程序项目的方法,那么我们将把放到项目中的一个特殊的助手类中,并将它们标记为可能的实用程序候选(simple//todo)。在项目结束时,我们审查候选人,如果他们坚持,我们就把他们转移到主要部门。 图书馆 .

    中断更改是不允许的,如果需要,我们将方法和类标记为[过时]。

    但是,这并不重要,因为我们在每次发布时都会增加版本。

    希望这有帮助。

        2
  •  3
  •   Ed Schwehm    16 年前

    我们在源代码管理中使用分支;每个人在发布前都使用头分支。当它们分支发布时,它们也将分支公共实用程序项目。

    此外,我们的公用事业项目有自己的单元测试。这样,其他团队就可以知道他们是否会破坏其他团队的构建。

    当然,我们还有一些问题,就像你偶尔提到的。但是,当一个团队签入一个破坏另一个团队构建的变更时,通常意味着该方法/对象的契约在某个地方被破坏了。我们将这些视为改进公共设施项目设计的机会。或者至少写更多的单元测试:/

        3
  •  1
  •   Rob Cooper    16 年前

    我已经拥有了 精确的 同样的问题!

    我曾经使用过项目引用,但似乎一切都变糟了,正如您所说,有许多项目引用它。

    现在,我编译到一个dll,并在第一次构建之后将dll引用的copyloc属性设置为false(否则,我发现它会覆盖子项目,并变得一团糟)。

    我想理论上它应该是gac'ed,但是如果它是一个变化很大的问题(就像我的一样),这可能会成为一个问题。