【发布时间】:2014-05-26 01:56:06
【问题描述】:
我正在尝试为我们的一些 ASP.NET 应用程序设置部署链。目前选择的工具是 Web Deploy (msdeploy)。不幸的是,我遇到了一个问题。
因此,链的高级概述是:
- Web 开发人员创建代码并在 SVN 中检查;
- Buildserver 看到更新并构建网站的 msdeploy .zip 包;
- .zip 包会自动放入我们的安装程序中并发送给各个客户端;
- 客户端在其网络服务器上运行安装程序(-s);
- 安装程序在内部使用 msdeploy 部署 .zip 包并创建新网站或升级现有网站。
Msdeploy 使部署新实例变得容易,但我对如何执行“升级”安装感到困惑。主要问题是 web.config 文件。每个客户肯定都会在那里进行一些定制以适应他们的特定环境。安装程序本身提供在首次安装时设置一些更关键的参数(通过 msdeploy 的参数机制实现),但他们可以手动设置其他参数。
另一方面,我们开发人员有时也会对 web.config 进行更改,添加一些新设置或删除过时的设置。所以我不能只告诉 msdeploy 完全忽略该文件。我需要某种高级 XML 修改机制。它可能是开发人员维护的脚本,但它只需要在升级时运行,而不是在新安装时运行。
我不知道如何做到这一点。
除此之外,有时还有一些完全奇怪的升级逻辑。例如,该应用程序带有我们公司的徽标,但一些客户已替换该 .png 文件以显示他们自己的徽标。最近我们需要更新徽标 - 但仅限于尚未用自己的徽标替换的客户。
同样,在某些升级时可能需要清理一些缓存文件夹,而在其他升级时则不需要。或包含可能无法触及的用户内容的文件夹(但在初始安装时带有默认内容)。等等。
您通常如何为 msdeploy 包实现这种双重行为?我真的需要为每个应用程序创建 2 个不同的包吗?
【问题讨论】:
标签: asp.net upgrade web-deployment msdeploy webdeploy