2008-09-18 91 views
4

我们有一套相互关联的.Net 3.5应用程序。一些是网站,一些是网络服务,一些是Windows应用程序。每个应用程序当前都有自己的配置文件(app.config或web.config),目前在配置文件中有一些重复键(手动同步),因为多个应用程序需要相同的配置值。此外,这套应用程序还部署在各种环境中(开发,测试,生活等)配置多个.Net应用程序的最佳方法

什么是管理这些多个应用程序从单个配置源配置的最佳方法,因此配置值可以在多个应用程序是否需要我们还希望为每个环境分别配置(因此在部署时不必手动更改某些特定的配置值,例如conenction字符串),但同时不想维护多个大型配置文件(每个环境一个)在添加新的配置密钥时保持同步,这将证明麻烦。

回答

1

我们使用文件模板(如MyApp.config.template和MyWeb.config.template)以及NAnt属性来指定环境之间不同的位。所以模板文件看起来有点像这样:

<MyAppConfig> 
    <DbConnString>${DbConnString}</DbConnString> 
    <WebServiceUri uri="${WebServiceUri}" /> 
</MyAppConfig> 

期间,我们通过刚刚通过南特脚本每个环境循环,改变恶性性质$的值{产生不同环境的所有CONFIGS构建DbConnString}和$ {WebServiceUri}为每个环境(实际上这些都设置在一个单独的文件中,每个环境都有不同的部分),然后用扩展属性的选项进行NAnt复制。

花费了一点时间才能建立起来,但它已经为我们节省了至少10倍的时间,节省了不同版本的配置文件。

7

Visual Studio有一个比较模糊的功能,可以让你添加现有的项目作为链接,它应该完成你正在寻找的东西。有关此主题的更多详细信息,请查看Derik Whittaker's post

Visual Studio的确应该让这个选项更加醒目。没有人真的认为点击“添加”按钮旁边的那个小箭头。

0

查看微软模式和实践小组的棱镜框架?

+0

如何将棱镜的帮助与配置问题? – 2009-02-23 09:34:27

3

您可以将App.config分成多个配置文件。您只需指定包含配置部分的文件的名称即可。

变化的app.config:

<SomeConfigSection> 
    <SettingA/> 
    <SettingB/> 
</SomeConfigSection> 
<OtherSection> 
    <SettingX/> 
</OtherSection> 

进入的app.config和SomeSetting.xml:

<SomeConfigSection file="SomeSetting.xml" /> 
<OtherSection file="Other.xml" /> 

其中SomeSetting.xml包含:

现在你可以撰写你的app.config从不同的部分文件中用某种构建或部署脚本。例如:

if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml 
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml 
相关问题