使用公共/实用程序库

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

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

这已经运作正常,但是有一些情况下,人们对共同项目进行了“重大改变”,这对他们有用,但对其他项目不起作用。

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

说了所有我有兴趣看到别人如何引用或使用他们的公共库。

这正是我们正在做的事情。 我们有一个Utility项目,它有一些非项目特定的有用function。 我们手动增加版本(次要),在Release版本中构建项目,签名并将其放到共享位置。

然后人们使用该的特定版本。

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

如果需要,我们会将方法和类标记为[已废弃]。

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

希望这可以帮助。

我们在源代码控制中使用分支; 每个人都使用头部分支,直到他们发布。 当他们分支发布时,他们也将分支公共实用程序项目。

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

当然,我们仍然会遇到像你偶尔提到的问题。 但是当一个团队检查一个破坏另一个团队构建的更改时,通常意味着该方法/对象的合同已在某处被破坏。 我们将这些视为改进公用事业项目设计的机会……或者至少要编写更多unit testing:/

我有同样的问题!

我曾经使用过项目引用,但这一切似乎都很糟糕,正如你所说,你有很多项目引用它。

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

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