如何使用不同的配置文件运行可执行程序?

时间:2010-07-23 09:29:44

标签: c# .net

我想用不同的配置文件运行程序,程序用C#2.0编写,我做了一些不同的文件名{program_name} .exe.config,我的意思是一个exe用不同的配置文件,例如我有3个配置文件,然后我将使用不同的配置文件运行3个exe,exe文件是相同的。  我是否可以不修改程序以读取不同的配置文件(我不想将配置文件路径放在exe命令参数中)来执行此操作(如使用批处理文件或其他方法。)?

感谢。

4 个答案:

答案 0 :(得分:8)

您可以更改加载exe的应用程序域的配置文件。这是使用AppDomain类的SetData方法完成的。确保将此行代码作为应用程序的第一行执行。

我使用以下代码在3个不同的可执行文件之间共享1个exe.config文件。

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE","yourSharedConfig.exe.config");

您可以查看以下博客条目
Binding to custom app.config

如果你想用3种不同的配置运行相同的exe,我相信相同的方法将适用于一些自定义。您可以在调用exe作为命令行参数时传递配置文件的名称,并使用SetData方法可以动态设置配置。

答案 1 :(得分:2)

您有三个配置和一个可执行文件的主要问题是您需要为可执行文件指定要使用的配置。

一种选择是制作3份可执行文件,exe1.exeexe2.exeexe3.exe,并为每个副本设置一个类似命名的配置 - exe1.exe.config,{{1} }和exe2.exe.config

运行每个可执行文件时,它将使用正确的配置。

另一种选择是拥有多个批处理文件,根据您要使用的文件重命名不同的配置文件。然后你有一个exe和三个配置。

答案 2 :(得分:2)

我使用LINQ并将参数作为config = path2file

传递
public partial class App : Application {

    private void startup(object sender, StartupEventArgs e) {
        if (null != e) {
            if (null != e.Args && 0 < e.Args.Length) {
                string config = e.Args.Where(a => a.StartsWith("config=")).FirstOrDefault();
                if (null != config) {
                    config = config.Substring("config=".Length);
                    if (File.Exists(config)) {
                        AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", config);
                    }
                }
            }
        }
    }

答案 3 :(得分:0)

您创建第二个可执行文件,并始终先运行该可执行文件。在其中,您所做的只是将一个配置文件重命名为正确的名称并激活主应用程序。

string currentConfig = "application.exe.config";
string someOtherName = "firstconfig.config";
string configFileYouWant = "secondconfig.config";
string application = "application.exe";

File.Move(currentConfig, someOtherName);
File.Move(configFileYouWant, currentConfig);
Process.Start(application);