在我工作的公司,我们有一个“实用程序”项目,我们构建的几乎所有应用程序都会引用该项目。它有很多东西,比如 NullHelpers、ConfigSettingHelpers、Common ExtensionMethods 等。

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

这工作正常,但是有一些情况,人们对公共项目进行了“重大更改”,这对他们有用,但对其他人不起作用。

我一直在想,与其将公共库添加为项目引用,也许我们应该开始将公共库开发为独立的 dll,并发布不同的版本并针对特定项目的特定版本,以便可以在没有任何风险的情况下进行更改使用公共库的其他项目。

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

有帮助吗?

解决方案

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

然后人们使用特定版本的 图书馆.

如果在某些特定项目中实现了一些有用的方法,并且这些方法可以进入主实用程序项目,我们会将其放入项目中的特殊帮助器类中,并将它们标记为可能的实用程序候选者(简单//TODO)。在项目结束时,我们会审查候选人,如果他们坚持下去,我们会将他们移至主要 图书馆.

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

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

希望这可以帮助。

其他提示

我们在源代码控制中使用分支;每个人都使用头分支,直到他们发布版本。当他们对版本进行分支时,他们也会对通用实用程序项目进行分支。

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

当然,我们偶尔也会遇到像您提到的问题。但是,当一个团队签入破坏另一个团队构建的更改时,通常意味着该方法/对象的契约已在某处被破坏。我们将这些视为改进公共公用事业项目设计的机会......或者至少编写更多单元测试:/

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

我曾经使用项目引用,但是当正如你所说,有很多项目引用它时,这一切似乎都变坏了。

我现在编译为 DLL,并在第一次构建后将 DLL 引用的 CopyLocal 属性设置为 false(否则我发现它可以覆盖子项目并变得一团糟)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top