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

问题描述:

我有几个共享公共项目的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?),我可以创建一个包含所有项目和重构的主解决方案,但是我必须检出并更新每个存储库才能做到这一点。

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

有没有更好的方法来做到这一点或避免这个问题?

+0

您是否使用svn:external在自定义项目中包含通用项目? – 2012-01-08 17:33:56

+0

不,我不知道。开发人员必须手动签出项目,以便参考不会中断。我会看看svn:external。 – Jason 2012-01-08 17:37:44

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

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

我不太明白你的

的意思,我将不得不检出和更新每一个库,能够做到这一点。

任何涉及所有项目的重构最终都会强制您更新所有这些项目。因此,无论如何,你似乎都需要这样做。我觉得我在这里错过了一些东西。

+0

我将检查每个使用共享项目的单独存储库中的每个项目,以便能够使用主解决方案。事情并不是每个开发者都应该在他的工作站上拥有所有的项目。 – Jason 2012-01-08 17:36:13

+0

@Jason我仍然不理解。如果你的重构真的触及了每个项目,那么你最终不得不在你的机器上拥有每个项目,以便不破坏构建? – JaredPar 2012-01-08 17:37:25

+0

通用项目是我们所有客户使用的基础应用程序。当客户想要为我们的系统定制或添加功能时,我们会创建一个独立的解决方案,这取决于基础应用程序。并非每个开发人员都必须处理每个解决方案,因此他们必须从存储库获取整个代码库才能从主解决方案中重构。对不起,如果不是很清楚。它更有意义吗? – Jason 2012-01-08 17:41:22

我们有类似的情况,你和我们利用多管齐下的方法来解决这个问题:

1)特定客户的变化是从核心应用程序通过使用接口,覆盖方法,或者新的隔离方法(当现有的方法不足时)。

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

2)在极少数情况下,必须对所有解决方案进行更改,我们有一个主解决方案可用于更新所有项目。

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

由于涉及到问责制(每个人都知道是谁破坏了构建),因此开发人员需要承担很多(积极)的压力,以确保他们不是造成问题的原因。

我们使用CruiseControl.Net与subversion版本库,但我相信有很多其他解决方案可以与你的版本库一起工作。