使用公共/实用程序库

时间:2008-09-03 10:13:30

标签: c# visual-studio api

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

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

这已经运作正常,但有几个例子,人们对共同项目进行了“重大改变”,这对他们有用,但对其他人不起作用。

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

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

3 个答案:

答案 0 :(得分:5)

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

然后人们使用特定版本的

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

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

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

希望这有帮助。

答案 1 :(得分:3)

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

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

当然,我们仍有偶尔提到的问题。但是当一个团队检查一个破坏另一个团队构建的变更时,通常意味着该方法/对象的合同在某个地方被破坏了。我们将这些视为改进常见公用事业项目设计的机会......或至少编写更多单元测试:/

答案 2 :(得分:1)

我有 EXACT 同样的问题!

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

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

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