每个环境的配置文件

时间:2011-07-14 15:55:27

标签: c# asp.net

我正在开发一个包含多个配置文件(Web,ConnectionStrings Windsor,Smtp,Appsettings,Nlog等)的多个环境(Local,Development,Main,Prod,Live)的项目。

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

在这种设置中存储和部署配置文件有哪些更优雅的选项?

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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