繁体   English   中英

每个环境的配置文件

[英]Configuration files per environment

我正在开发一个具有多个环境(本地、开发、主要、产品、实时)的项目,这些环境具有多个配置文件(Web、ConnectionStrings Windsor、Smtp、Appsettings、Nlog 等)。

当前使用的策略是为每个分支使用其中一个配置,并手动维护配置,而不是合并任何更改。

在这种设置中存储和部署配置文件的更优雅的选择是什么?

一般来说,我试图将这些设置中的大部分保留在 appSettings 中(尽管我知道这不是他们的“官方”正确位置)。 然后我将 appSettings 分解为一个 environment.config 文件,并通过 configSource 属性让 web.config 中的 appSetting 元素引用它。

当我设置一个新环境时,我为该环境手动设置了 environment.config 文件。 当我部署新版本时,我会从部署中排除 environment.config 文件,以便特定于环境的版本保持不变。

这使您可以部署 web.config 的新副本以包括与项目相关的更改,同时将所有真正特定于环境的设置保存在单独的位置。

一个优雅的解决方案是使用WebDeploy (来自 Microsoft)来部署您的 web 应用程序。 当您运行部署时,您可以指定一个特定于站点的参数文件,该文件将用于替换 web.config 文件中的几个值。

对于部署,WebDeploy 使用 Visual Studio 或 msbuild 可以创建的部署包。

这样,我们就有了一个单独的部署 package,我们可以首先部署在一个测试系统上,运行几个测试,然后,当它通过测试时,在几个服务器上部署而不做任何更改。 每个服务器都有其本地参数文件,该文件几乎不会更改并包含站点特定的值。

将它们存储在所有环境中具有相同名称的文件服务器上。 我不熟悉所有配置,但大多数都有这样做的方法。 这种方法的唯一问题通常是 dev/local,它们通常共享一个文件服务器,因此您必须手动更改本地。

如果您实际上无法将配置指向文件服务器,那么一个不太优雅的解决方案是在部署或启动时通过 bat 文件将它们拉下来。 似乎有很多选择而不是手动维护,这很容易出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM