关于asp.net:配置多个.Net应用程序的最佳方法

关于asp.net:配置多个.Net应用程序的最佳方法

Best Approach For Configuring Multiple .Net Applications

我们有一套相互链接的.Net 3.5应用程序。有些是网站,有些是Web服务,有些是Windows应用程序。每个应用程序当前都有其自己的配置文件(app.config或web.config),并且由于多个应用程序需要相同的配置值,因此当前在配置文件中有一些重复的密钥(此刻它们现在手动保持同步)。此外,这套应用程序套件可在各种环境(开发,测试,实时等)中部署

从单个配置源管理这些多个应用程序的配置的最佳方法是什么,因此如果需要,可以在多个应用程序之间共享配置值?我们还希望为每个环境提供单独的配置(因此在部署时,您不必手动更改某些特定于环境的配置值,例如连接字符串),但同时又不想维护多个大型配置文件(每个环境一个),因为在添加新的配置密钥时保持同步是很麻烦的。


Visual Studio具有相对模糊的功能,可让您将现有项目添加为链接,从而可以完成所需的功能。请查看Derik Whittaker关于该主题的文章,以获取更多详细信息。

Visual Studio确实应该使此选项更加可见。没有人真正想到单击"添加"按钮旁边的那个小箭头。


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

更改app.config:

1
2
3
4
5
6
7
<SomeConfigSection>
  <SettingA/>
  <SettingB/>
</SomeConfigSection>
<OtherSection>
  <SettingX/>
</OtherSection>

进入app.config和SomeSetting.xml:

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

其中SomeSetting.xml包含:

现在,您可以使用某种构建或部署脚本从不同的分区文件中构成app.config。例如。:

1
2
if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml


这两个问题可能对您有所帮助:针对大型项目使用machine.config和管理app.config


我们将文件模板(例如MyApp.config.template和MyWeb.config.template)与NAnt属性一起使用,以获取环境之间不同的位。因此,模板文件可能看起来像这样:

1
2
3
4
<MyAppConfig>
    <DbConnString>${DbConnString}</DbConnString>
    <WebServiceUri uri="${WebServiceUri}" />
</MyAppConfig>

在构建过程中,我们仅通过在NAnt脚本中循环遍历每个环境,并为每个环境更改NAnt属性$ {DbConnString}和$ {WebServiceUri}的值来生成针对不同环境的所有配置(实际上,这些都在一个单独的文件,其中包含每个环境的相应部分),并进行NAnt复制并打开扩展属性选项。

花费了一些时间进行设置,但它使我们节省了至少十倍的时间,以节省处理不同版本的配置文件的时间。


从Microsoft的模式和实践小组检查棱镜框架吗?


推荐阅读

    linux内核配置命令?

    linux内核配置命令?,工作,系统,管理,环境,信息,命令,工具,软件,设备,服务,调

    linux进入配置的命令?

    linux进入配置的命令?,网络,地址,服务,系统,状态,工作,信息,技术指标,最新,

    linux硬链接删除命令?

    linux硬链接删除命令?,数据,系统,不了,时间,名称,链接,文件,档案,地方,设备,l

    linux配置网络命令?

    linux配置网络命令?,系统,地址,工作,网络,代码,信息,工具,名字,设备,命令,lin

    linux常用链接命令?

    linux常用链接命令?,系统,工作,地址,网络,信息,命令,密码,管理,标准,服务,在L

    linux链接网络命令行?

    linux链接网络命令行?,地址,系统,网络,工作,软件,工具,信息,密码,服务,标准,l

    linux进入网站命令?

    linux进入网站命令?,系统,环境,网站,传播,终端,命令,窗口,快捷键,界面,虚拟

    linux命令下载链接?

    linux命令下载链接?,软件,名称,系统,工具,网络,官网,代理,命令,平台,位置,lin

    配置linux命令行颜色?

    配置linux命令行颜色?,系统,地址,电脑,分析,代码,信息,设备,终端,颜色,命令,L

    linux配置相关的命令?

    linux配置相关的命令?,网络,地址,系统,工具,代码,状态,命令,信息,管理,初级,

    linux配置网卡的命令?

    linux配置网卡的命令?,网络,信息,系统,工具,代码,地址,设备,工作,电脑,最新,i

    linux入侵网站命令?

    linux入侵网站命令?,工作,地址,信息,系统,数字,网站,名称,命令,网络,密码,lin

    linux系统软链接命令?

    linux系统软链接命令?,位置,系统,链接,文件,服务,地址,标准,交通,异常,软件,

    配置网关的命令linux?

    配置网关的命令linux?,地址,系统,网络,代码,信息,环境,命令,网关,服务,电脑,

    linux配置ip命令行?

    linux配置ip命令行?,地址,系统,代码,网络,设备,工具,服务,密码,命令,网卡,lin

    linux创建硬链接命令?

    linux创建硬链接命令?,数据,系统,链接,地方,信息,文件,概念,时间,位置,工作,L

    linux配置文件夹命令?

    linux配置文件夹命令?,地址,系统,工作,信息,命令,标准,服务,名称,位置,文件,l

    linux文件链接命令?

    linux文件链接命令?,系统,工作,地址,命令,网络,信息,工具,基础,管理,目录,lin

    查询linux配置的命令?

    查询linux配置的命令?,系统,网络,地址,情况,信息,电脑,中科,状态,服务,命令,

    查询linux配置的命令?

    查询linux配置的命令?,系统,网络,地址,情况,信息,电脑,中科,状态,服务,命令,