一个用于多个环境的配置文件

时间:2010-05-10 20:10:00

标签: .net winforms app-config

我目前正在使用具有大量特定于环境的配置设置(Dev,UAT,Production)的系统。有没有人建议在环境之间移动时尽量减少配置文件所需的更改,以及最大限度地减少配置文件中的数据重复?

主要是应用程序设置而不是用户设置。

我现在这样做的方式类似于:

<DevConnectionString>xyz</DevConnectionString>
<DevInboundPath>xyz</DevInboundPath>
<DevProcessedPath>xyz</DevProcessedPath>
<UatConnectionString>xyz</UatConnectionString>
<UatInboundPath>xyz</UatInboundPath>
<UatProcessedPath>xyz</UatProcessedPath>
...
<Environment>Dev</Environment>

然后我有一个类通过My.Settings类(它的VB项目)读取环境设置,然后使用它来决定要检索的其他设置。这导致了太多的重复,所以我不确定它是否值得。

1 个答案:

答案 0 :(得分:1)

为什么不让环境定义要读取的配置文件,然后在没有前缀的情况下键入该文件?这样,您可以使用相同的代码解析不同的配置。

my.settings:阅读此内容以确定要使用的设置文件。

<EnvironmentMapping>
    <Environment>Dev</Environment>
    <File>dev.settings</File>
</EnvironmentMapping>
<EnvironmentMapping>
    <Environment>Uat</Environment>
    <File>uat.settings</File>
</EnvironmentMapping>
<Environment>Dev</Environment>

dev.settings:这些是Dev环境的设置。仅当Dev是所选环境时才会读取此内容。

<ConnectionString>devconnection</ConnectionString>
<InboundPath>devinbound</InboundPath>
<ProcessedPath>devprocessed</ProcessedPath>

uat.settings:这些是UAT环境的设置。只有在Uat是选定的环境时才会读取此内容。

<ConnectionString>uatconnection</ConnectionString>
<InboundPath>uatinbound</InboundPath>
<ProcessedPath>uatprocessed</ProcessedPath>