2010-07-23 72 views
5

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

谢谢。

+0

你的意思是你有一个可执行文件和三个配置文件,并且要选择使用哪一个? – 2010-07-23 09:32:31

回答

1

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

一种选择是让你的可执行文件3份,exe1.exeexe2.exeexe3.exe,并为每个名称相似的配置 - exe1.exe.configexe2.exe.configexe3.exe.config

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

另一个选项是有几个批处理文件,它们会根据要使用的文件重命名不同的配置文件。然后你有一个单一的exe和三个配置。

+0

我有类似的情况,我通过将exe的副本放入单独的文件夹中。所以我有folder1,folder2,folder3包含相同的可执行文件。然后使用Windows批处理文件,我能够一次启动所有三个通过使用 START folder1 \ myexe.exe START folder2 \ myexe.exe START folder3 \ myexe.exe – abhi 2011-12-14 21:16:32

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); 
7

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

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

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

你可以看看下面的博客文章
Binding to custom app.config

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

+0

感谢Nilesh,这对我来说很好! – 2012-04-25 14:45:48

+0

使用'AppDomain.CurrentDomain.SetupInformation.ConfigurationFile =“yourSharedConfig.exe.config”'会不会更好? – Keith 2015-06-23 11:54:39

1

我与LINQ让它和传递参数的配置= 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); 
        } 
       } 
      } 
     } 
    } 
相关问题