App.config von beliebiger Stelle laden

Written on February 08, 2011

Im Normalfall verwendet eine .NET-Applikation eine App.config, die dem Namensschema MeineApp.dll.config oder MeineApp.exe.config entspricht.

Entwickelt man jedoch .NET-Anwendungen, die z.B. als Plugin in anderen Anwendungen (z.B. Outlook oder SolidWorks) laufen, wird die App.config nach diesem Schema nicht gefunden (es hilft auch nicht, in der App.config eine andere Config einzubinden, da bereits die App.config nicht gefunden wird).

Es gibt jedoch eine einfache Möglichkeit, beim der Start der Applikation einen anderen Pfad zur Konfigurationsdatei zu definieren.

Mittels AppDomain.SetData kann die AppDomain konfiguriert werden.

Damit kann man die Eigenschaft APP_CONFIG_FILE ändern, welche den Pfad zur Konfigurationsdatei angibt.

Der Aufruf sieht dann so aus:

using System;
using System.Configuration;
using System.IO;

namespace CustomAppConfigConsole {
    class Program {
        static void Main(string[] args) {
            Environment.SpecialFolder documentsFolder = Environment.SpecialFolder.MyDocuments;
            string documentsPath = Environment.GetFolderPath(documentsFolder);
            string appConfigPath = Path.Combine(documentsPath,"CustomConfig.config");
            AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", appConfigPath);
            Console.WriteLine(ConfigurationManager.AppSettings["Name"]);
            Console.ReadLine();
        }
    }
}

Damit wird die CustomConfig.config aus dem Ordner "Meine Dokumente" geladen.

In der MSDN-Dokumentation zur GetData-Methode finden sich die übrigen Properties, die zur Konfiguration der AppDomain zur Verfügung stehen.

Die Beispiel-Solution kann hier heruntergeladen werden.

DotNetKicks-DE Image