c# - 是否可以在运行时为 .NET 应用程序切换应用程序配置文件?

标签 c# .net configuration

默认情况下,.NET 应用程序的配置文件以“exe 文件名”.config 命名。我想知道是否可以动态指定一个应用程序的配置。

例如,构建的应用程序是“foo.exe”。在运行时,配置文件是“foo.exe.config”。是否可以让它接受命令行参数以使用其他配置文件。因此,应用程序可以使用如下所示的其他配置。

foo.exe /config:bar.config

bar.config 代替 foo.exe.config 用作配置文件。

最佳答案

如果您只需要替换 AppSettings 部分,以上所有方法都可以正常工作。

如果您必须使用不同的配置文件(所有部分)运行,您可能需要考虑使用主机启动应用程序,它会为您的主应用程序创建应用程序域,并根据您传入的参数设置不同的配置文件。

这是对我有用的代码:

        AppDomainSetup setup = new AppDomainSetup();
        setup.ApplicationBase = "file://" + System.Environment.CurrentDirectory;
        setup.DisallowBindingRedirects = true;
        setup.DisallowCodeDownload = true;

        if (args.Length != 0 && args[0].Equals("-test"))
        {
            setup.ConfigurationFile = "PATH_TO_YOUR_TEST_CONFIG_FILE";
        }
        else {
            setup.ConfigurationFile = "PATH_TO_YOUR_LIVE_CONFIG_FILE";
        }

        AppDomain domain = AppDomain.CreateDomain("FRIENDLY_NAME", null, setup);
        domain.ExecuteAssembly("YourMainApp.exe");

关于c# - 是否可以在运行时为 .NET 应用程序切换应用程序配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/242568/

相关文章:

c# - WPF 新手 - 在 XAML 中设置 ItemsSource 似乎不起作用

.net - 如何在 .NET 中的 TreeView 中获取所有子节点的列表

.net - 当变量在 .NET 中获得特定值时,我可以设置断点吗?

nginx - 我可以在 NGINX 上游服务器配置中为权重设置的最大值是多少?

c# - Wpf Datagrid 中的组标题为空

c# - 如何断言一个 Action 被调用

c# - 为什么 decimal 不是原始类型?

linux - 如何保护 Web 应用程序配置文件的安全

php - 如何在 php 中设置 Symfony 2 从数据库配置

C# Linq .ToDictionary() 键已存在