跨多个解决方案重构共享代码

时间:2012-01-08 17:15:28

标签: .net visual-studio refactoring reference shared-libraries

我有几个Visual Studio解决方案,它们共享一个共同的项目。

示例:

Solution of the common project
  - Common project

Solution A
  - Common project
  - Custom project A

Solution B
  - Common project 
  - Custom project B

And so on...

每个解决方案都有自己的SVN存储库,供开发人员只能使用特定解决方案。

将会有大约50-60种不同的解决方案,我需要能够单独构建它们。

例如,当我在其他项目中使用的公共项目中重命名方法时,是否有办法将更改应用于每个解决方案?

就像这里建议的解决方案(Is there a refactoring tool that works across solutions files?)一样,我可以创建一个包含所有项目和重构的主解决方案,但是我必须检查并更新每个存储库才能执行此操作。 / p>

我应该更改存储库的结构吗?

有更好的方法可以做到这一点或避免这个问题吗?

2 个答案:

答案 0 :(得分:3)

Visual Studio中无法将特定的重构应用于当前未打开的项目。重构仅适用于当前解决方案中打开的项目。

为了促进大量解决方案的重构,最好的方法是简单地创建包含所有项目的主解决方案。对于一般用途,这可能有点不整洁且使用缓慢。但对于大规模的重构,它可以节省大量的物品。

我不太清楚我明白你的意思

  

我必须结帐并更新每个存储库才能执行此操作。

任何触及所有项目的重构最终都会迫使您更新所有项目。所以看起来你还是需要这样做。我觉得我在这里错过了一些东西。

答案 1 :(得分:2)

我们有与您类似的情景,我们采用多管齐下的方法来解决它:

1)通过使用接口,重写方法或新方法(当现有方法不够时),将核心应用程序与客户特定的更改隔离开来。

这可确保核心应用程序框架向后兼容现有解决方案。

2)在极少数情况下,必须对所有解决方案应用更改,我们可以使用单个主解决方案来更新所有项目。

3)持续集成:在每次签入时,每个解决方案都会自动构建,成功或失败的消息将分发给所有开发人员,以便责任方可以修复任何重大变更。

由于涉及到问责制(每个人都知道谁破坏了构建),开发人员面临着很大的(正面)压力,以确保他们不是导致问题的因素。

我们将CruiseControl.Net与subversion存储库一起使用,但我确信还有很多其他解决方案可以与您的存储库一起使用。