将具有相同代码库但内容不同的项目部署到多个站点

Pet*_*ert 5 asp.net deployment

我有一个通过Visual Studio的Web部署部署的ASP.NET MVC项目 - 到目前为止一切正常.

我现在需要部署同一项目的另一个版本(例如,针对不同的客户) - 具有相同的代码库/功能,但具有不同的布局,即其他CSS和图像(甚至可能具有不同的视图/ Razor代码).理想情况下,其他配置的内容根本不会发布.

我知道我可以为持久层使用不同的连接字符串 - 但有没有办法配置其他内容元素呢?

我想避免有两个版本(或更高版本)需要分支/合并 - 而是想简单地部署具有不同"主题"的最新版本......

Ten*_*giz 2

您有两个选择:

A) 开发一个自定义视图引擎,根据配置在不同页面集之间切换。这将允许您只需更改 web.config 设置即可在页面集之间进行切换,这非常适合 Visual Studio 的内置部署模型(针对不同的部署环境启动不同的 web.config 转换)。我想到的一种实现是在不同部署环境的视图引擎之间切换(在不同的 web.config 转换中)。

与从数据库加载页面的其他建议不同,我建议从文件夹或物理位置加载它们(例如,针对项目的不同子文件夹的不同视图引擎)。当涉及到开发和修复数据库中的页面及其标记时,数据库方法对开发人员并不友好。

B) 在同一项目下开发所有页面集(所有变体),然后编写自定义部署脚本,根据部署环境部署特定页面集。这种方法的缺点是很难注意到页面集相交或链接跨越页面集边界等问题。

虽然 B 计划听起来在开发方面稍微简单一些,但在维护和部署方面它可能会成为一场噩梦。

所以,我推荐A方案。