【问题标题】:Best Approach For Configuring Multiple .Net Applications配置多个 .Net 应用程序的最佳方法
【发布时间】:2010-09-10 21:55:42
【问题描述】:

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

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

【问题讨论】:

    标签: .net asp.net configuration


    【解决方案1】:

    Visual Studio 有一个相对晦涩的功能,可让您将现有项目添加为链接,这应该可以完成您正在寻找的内容。查看Derik Whittaker's post 了解更多详情。

    Visual Studio 确实应该让这个选项更加明显。没有人真正想过点击“添加”按钮旁边的那个小箭头。

    【讨论】:

      【解决方案2】:

      您可以将 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
      

      【讨论】:

        【解决方案3】:

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

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

        在构建过程中,我们只需在 NAnt 脚本中循环遍历每个环境,更改每个环境的 NAnt 属性 ${DbConnString} 和 ${WebServiceUri} 的值(实际上这些是所有设置在一个文件中,每个环境都有部分),并在打开属性的选项的情况下进行 NAnt 复制。

        设置需要一些时间,但它为我们节省了至少十倍的时间来处理不同版本的配置文件。

        【讨论】:

          【解决方案4】:

          这 2 个问题可能会对您有所帮助:Utilizing machine.configManaging app.config for large projects

          【讨论】:

          • 我不知道为什么这是否定的,这两个问题在管理配置时会很有帮助。
          【解决方案5】:

          查看 Microsoft 模式和实践小组的 prism 框架?

          【讨论】:

          • prism 如何帮助解决配置问题?
          猜你喜欢
          • 1970-01-01
          • 2013-04-27
          • 2011-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-16
          • 2010-11-20
          • 2021-12-04
          相关资源
          最近更新 更多