如何处理和部署每个环境的配置属性

本文关键字:环境 属性 配置 部署 何处理 处理 | 更新日期: 2023-09-27 18:12:02

我有一个配置,例如,存储文件(如图像和pdf)的外部服务器的主机名,存储在设置文件中。这些设置存储在一个名为CommonSettings的类库中。根据部署应用程序的环境,此路径的值可能会更改。这是:

  • 本地环境为"localhost"
  • 对于QA环境,取值为"qa-external-files"
  • prod环境为"prod-external-files"

然后我必须在代码中访问这些设置,但我需要从代码中解耦每个环境的设置值。例如,我想实现这样的东西(使用c#在控制台应用程序中进行测试):

using CommonSettings;
String externalServerHostName = CommonSettings.Properties.Setting.Default.ExternalServerHostName;
Console.Write(externalServerHostName);
//prints localhost when I execute this from my machine
//prints qa-external-files when I execute this from the qa environment

在Java中,我可以通过创建文件夹结构并在每个环境中有一个文件夹来处理此场景,然后每个文件夹包含一个文件(属性文件)中的相关设置,并使用自动构建工具(maven)根据我想要/需要的环境生成仅包含属性文件的库。

我可以有一个类似的方法使用。net吗?或者我应该使用一个构建工具来处理这个问题?

如何处理和部署每个环境的配置属性

是否可以将配置设置存储在app.config文件中而不是类库中?如果是这样,您可以根据您所处的环境对app.config应用转换。您是对的,转换应该在构建期间处理,而不是在运行时处理。

如果你有一个ASP。Net应用程序,web。配置转换更容易:

http://msdn.microsoft.com/en-us/library/dd465326 (v = vs.110) . aspx

如果你正在使用WPF或其他非ASP的东西,那么在app.config上做转换需要做更多的工作。幸运的是,Visual Studio有一个VSIX文件可以帮助您:

http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx