2010-07-23 44 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); 
        } 
       } 
      } 
     } 
    } 
相關問題