Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用公共/实用程序库_C#_Visual Studio_Api - Fatal编程技术网

C# 使用公共/实用程序库

C# 使用公共/实用程序库,c#,visual-studio,api,C#,Visual Studio,Api,在我工作的公司,我们有一个“实用程序”项目,它几乎被我们构建的任何应用程序引用。它有很多东西,比如NullHelper、ConfigSettingHelper、Common ExtensionMethods等等 我们的工作方式是,当我们想要创建一个新项目时,我们从源代码管理获取项目的最新版本并将其添加到解决方案中,然后从添加到解决方案中的任何新项目中引用该项目 这很有效,但是有几个例子,人们对公共项目进行了“突破性的更改”,这对他们有效,但对其他人无效 我一直在想,与其将公共库添加为项目参考,也

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

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

这很有效,但是有几个例子,人们对公共项目进行了“突破性的更改”,这对他们有效,但对其他人无效

我一直在想,与其将公共库添加为项目参考,也许我们应该开始将公共库开发为独立的dll,发布不同的版本,并针对特定项目的特定版本,以便在不影响使用公共库的其他项目的情况下进行更改


说到这里,我很想看看其他人是如何引用或使用他们的公共库的。

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

然后人们使用特定版本的库

如果在某些特定的项目中实现了一些有用的方法,这些方法可能会进入主实用程序项目,那么我们会将它们放到项目中的一个特殊助手类中,并将它们标记为可能的实用程序候选对象(simple//TODO)。在项目结束时,我们审查候选人,如果他们坚持,我们将他们移至主库

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

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

希望这有帮助。

我也遇到过同样的问题

我过去经常使用项目引用,但正如你所说,当你有许多项目引用它时,一切似乎都变糟了

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


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

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

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


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

我发现单元测试的问题是,一些团队成员不太了解单元测试的一些更精细的概念,因此他们会更改单元测试以满足他们的需要,因此代码通过了单元测试,但实际上并没有达到最初的目的do@lomaxx:那会很难:)。除了告诉人们不要更改他们不拥有的单元测试(或者将每个团队的测试放在他们自己的夹具或项目中或其他东西中),我不确定除了培训人们进行单元测试之外,您可以如何处理这些问题。说起来容易做起来难。