最可维护的方法是在多个项目之间共享代码

时间:2010-08-26 08:41:55

标签: c# .net visual-studio-2005 .net-2.0

鉴于多个网站都运行相同的源代码,在Visual Studio中将这些组织到项目中的最佳/最可维护方式是什么?

例如,假设我们有网站RedBlueGreen(等)。他们的HTML可能不同,但它们在功能上是相同的。

以前在一个解决方案中,我们创建了一个项目Colour,其中包含项目的通用版本。 RedBlueGreen获得自己的项目,每个技术页面都设置为使用Colour中的C#。 (也就是说,各个实现没有唯一的C# - 所有代码文件都被删除了。)

然而,这种方法导致我们最终得到了几乎没有任何东西的多个单独的实现dll,并且还有像javascript,css和常见图像这样的其他东西在项目中得到重复。

理想情况下,我们希望能够孤立地运行每个项目,而sourceafe共享似乎总是一个糟糕的主意。

有更好的方法吗?

编辑:忘记提及,所有业务逻辑/数据访问都由共享的业务层项目处理,因此所有代码都是独立和共享的。

2 个答案:

答案 0 :(得分:2)

将共享代码打包到类库中。这将负责数据层,业务逻辑和一些其他辅助例程。我的经验是,它对具有相同基础的项目有很大帮助。

您的项目红色,绿色和蓝色,如果它们不同,那么它们必须分开。你无法真正规避这一点。我个人的方法是在你忘记之前立即将一个变化引入所有其他变化。这对我来说很好。

答案 1 :(得分:1)

我建议您使用MVP pattern with ASP.NET。这样,您可以拥有一个包含模型和演示者的类库项目,这些项目将由包含视图的多个ASP.NET应用程序引用,当然还有静态资源,例如JS,CSS,可能特定于每个站点的图像。当然,如果您想在Web应用程序之间共享静态资源,您可以将它们放在一个公共位置,以便从那里引用它们(就像SO对sstatic.net一样)。

所以你的解决方案看起来像这样:

NameOfProject.sln
    |
    |-- NameOfProject.Presenters
    |
    |-- Web Application 1
    |
    |-- Web Application 2
  .....
    |-- Web Application n