【问题标题】:Changing the .NET application configuration file name更改 .NET 应用程序配置文件名
【发布时间】:2010-10-01 04:07:32
【问题描述】:

我有一个调用 .NET 程序集的 VB6 应用程序,该程序集引用了 app.config 文件中的设置。默认情况下,.NET 会查找以 VB6 应用程序命名的配置文件。如何重定向它以使用不同的配置文件名?这需要成为默认配置文件,以便例如从中读取 WCF 设置。

【问题讨论】:

  • 既然已经有一个系统定义了“默认”配置文件,那么你想做什么需要改变它?
  • 我不希望它以 VB6 应用程序命名。我有其中几个,并希望避免为每个配置文件提供一个副本,因为这些设置并不是每个应用程序都特定于每个应用程序,而是特定于 .NET 程序集。
  • 在这种情况下,您可能不需要使用 App.config 来解决您的问题,因为它的目的是针对每个应用程序设置。如果无论应用程序如何,程序集的设置都应该相同,那么这些不只是硬编码值吗?

标签: .net app-config


【解决方案1】:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @configFile);

【讨论】:

【解决方案2】:

你无法改变它。每个 AppDomain 实例都有一个固定的 app.config,它是在创建新应用域时通过 AppDomainSetup 实例设置的。虽然您可以通过 AppDomain.SetupInformation 获取设置信息,但此时它实际上已变为只读。

鉴于此,一种选择可能是从您的 Main 函数中创建一个新的应用程序域,并将该域配置为使用您需要的 app.config。

【讨论】:

  • 谢谢,这就是我最后所做的。主 (.NET) 应用程序设置 APPDOMAIN_MANAGER_TYPE 和 APPDOMAIN_MANAGER_ASM 环境变量以导致使用自定义 AppDomainManager,这将覆盖 InitializeNewDomain 以将 AppDomainSetup.ConfigurationFile 属性设置为指向共享的 .exe.config 文件。当你知道怎么做时很容易!
【解决方案3】:

考虑将您的配置放入一个 XML 序列化对象中。

【讨论】:

    【解决方案4】:

    您可以强制应用程序读取特定的配置文件使用

    System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG);
    

    【讨论】:

    • 谢谢。我需要它成为“默认” app.config 文件,以便例如从中读取 WCF 设置。我将更新问题以更具体。
    猜你喜欢
    • 2011-11-05
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多