2010-07-23 36 views
5

Chcę uruchomić program z innym plikiem konfiguracyjnym, program napisać przy pomocy C# 2.0, tworzę inną nazwę pliku {program_name} .exe.config, mam na myśli jeden plik exe z innym plikiem konfiguracyjnym, na przykład mam 3 plik konfiguracyjny , a następnie uruchomię 3 exe z innym plikiem konfiguracyjnym, ale plik exe jest taki sam. Czy mogę nie modyfikować programu do odczytu różnych plików konfiguracyjnych (nie chcę umieścić ścieżki pliku konfiguracyjnego w parametrach polecenia exe), aby to zrobić (np. Użyć pliku wsadowego lub innej metody.)?Jak uruchomić program wykonywalny z innym plikiem konfiguracyjnym?

Dzięki.

+0

To znaczy, masz jeden plik wykonywalny i trzy pliki konfiguracyjne, a chcesz wybrać, który z nich korzystać? –

Odpowiedz

1

Główny problem z trzema konfiguracjami i jednym plikiem wykonywalnym polega na określeniu pliku wykonywalnego, którego ma używać konfiguracja.

Jedną z opcji jest, aby 3 kopie pliku wykonywalnego, exe1.exe, exe2.exe i exe3.exe i mają podobnie nazwie config dla każdego - exe1.exe.config, exe2.exe.config i exe3.exe.config.

Po uruchomieniu każdego pliku wykonywalnego będzie używana poprawna konfiguracja.

Inną opcją jest posiadanie kilku plików wsadowych, które zmieniają nazwy różnych plików konfiguracyjnych zgodnie z tym, którego chcesz użyć. Następnie masz jeden exe i trzy konfiguracje.

+0

Mam podobną sytuację i zrobiłem to, robiąc kopie exe w oddzielnych folderach. Miałem więc folder1, folder2, folder3 zawierający ten sam plik wykonywalny. następnie przy użyciu pliku wsadowego systemu Windows, byłem w stanie uruchomić wszystkie trzy na raz, przy użyciu START folder1 \ myexe.exe START folder2 \ myexe.exe Folder START3 \ myexe.exe – abhi

0

Tworzysz drugi plik wykonywalny i zawsze uruchamiasz go najpierw. W tym wszystkim wystarczy zmienić nazwę pliku konfiguracyjnego na poprawną nazwę i zwolnić główną aplikację.

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

Możesz zmienić plik konfiguracyjny dla domeny aplikacji, w której ładowany jest plik exe. Odbywa się to za pomocą metody SetData klasy AppDomain. Upewnij się, że ten wiersz kodu jest wykonywany jako pierwsza linia aplikacji.

Użyłem następującego kodu, aby udostępnić 1 plik exe.config między 3 różnymi plikami wykonywalnymi.

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

Możesz zajrzeć na poniższym blogu
Binding to custom app.config

Jeśli chcesz uruchomić ten sam exe z 3 różnych configs, uważam, że samo podejście będzie współpracować z odrobiną personalizacji. Możesz przekazać nazwę pliku konfiguracyjnego podczas wywoływania exe jako parametru wiersza poleceń i za pomocą metody SetData możesz dynamicznie ustawić konfigurację.

+0

Dzięki Nilesh, to działa dobrze dla mnie! –

+0

Czy nie byłoby lepiej użyć 'AppDomain.CurrentDomain.SetupInformation.ConfigurationFile =" yourSharedConfig.exe.config "'? – Keith

1

robię to z LINQ i przekazując jako parametr 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); 
        } 
       } 
      } 
     } 
    } 
Powiązane problemy