Laden von externen .config-Dateien

LutzBerillio

Grünschnabel
Hallo Leute,

ich versuche im Moment aus der app.config herraus eine externe meinTool.config zu laden.
In der app.config hatte ich erst alle Informationen drinne und die liefen so auch 100%ig, allerdings muss die Werte aus der app.config von einem externen Tool aus ohne neukompilieren verändern können.

Zum Aufbau:

Ich habe in der app.config mehrere eigene Sections eingebaut die jeweils ein Attribut name und type haben
Code:
<configSections>
<section name="MeineSection" type="MeinTool.Configuration.Sections.DataExporterSection, MeinTool"/>
</configSections>

Danach nutze ich die definierten Tags:
Code:
<MeineSection DataExporter="MeinTool.ResourceExporter.ResourceFactory.Null.NullResourceFactory, MeinTool"
											 ExportPath="./exports"/>

Zum Zugriff auf die in den Sections definierten Typen in meinem Tool habe ich mir einen Configuration-Wrapper geschrieben, der es mir ermöglicht diese Typen zu instanziieren (sämtliche Fehlerabfragen hab ich hier mal rausgelassen):
Code:
			MeineSection mySection = ConfigurationManager.GetSection("MeineSection") as MeineSection;
			
			Type type;
			try
			{
				type = Type.GetType(mySection.DataExporter);
			}
			catch (Exception e)
			{	}

			object o = Activator.CreateInstance(type);

			return o as IResourceFactory;

Soweit zum Aufbau...

Ich hab mich jetzt schonmal an <appSettings file="meinTool.config"/> versucht, sowie an <connectionStrings...> Ich kriegs einfahc nicht gebacken, dass die externe Config eingeladen wird und ich dann auch die Typen instanziieren kann...

Hoffe da kann mir hier jemand weiterhelfen...
 
Warum brauchst du eine zweite .config, wenn du doch schon mit Sections arbeiten kannst? Andere Möglichkeit wäre, du legst dir eine Section an, wo der Pfad der .config drinsteht. Anschliessend kannst du diese ja nachladen.
 
Hey,

ich benötige die 2. Config Datei um editieren aus einem anderen Tool. Es existiert Tool1 (konsolenbasiert und parametrierbar). Es soll nun ein Tool2 geben (GUI und grafisch parametrierbar) das Tool1 aufruft und konfigurieren kann.
Nun kann ich ja von Tool2 aus nicht in der app.config von Tool1 rumhantieren. Daher dachte ich, das ich eine .config mache, die von Tool2 editierbar ist, und die die app.config von Tool1 einfach nur inkludiert.

Was meinst du genau mit "nachladen"? Habe ich dann nicht das selbe Problem wie jetzt und kann auf die Sections nicht zugreifen?
 
Meiner Meinung nach wird die jetzt angestrebte Lösung immer unsauber bleiben, weil du Konfigurationen für ein Programm in zwei Dateien hast. Alternativ kannst du deine Sektions doch von der Gui Applikation einfach mit dem xml der anderen app.config bearbeiten.
 
Hey,

was meinst du mit
Alternativ kannst du deine Sektions doch von der Gui Applikation einfach mit dem xml der anderen app.config bearbeiten.

Wenn ich die app.conf im Visual Studio auf "Copy always" stelle, wird sie zwar mitkopiert in das Ausgabeverzeichnis, allerdings ist es der Anwendung doch egal, was dann da drinne steht...
Die Variante, einfach die app.config anzupassen von dem Fremd-Tool aus wäre mir am liebsten, allerdings seh ich keinen Weg dahin...

Dank dir schonmal für deine Antworten!

Gruß
Chris
 
Was ich meine ist folgendes:

Warum liest deine GUI-Applikation nicht die Konfiguration der anderen Applikation mit dem xml-Reader ein. Anschließend kannst du mit der GUI-Applikation die Einstellungen vornehmen und diese im eingelesenen xml-Objekt ändern. Zum Abschluss schreibst du alles mit dem xml-Textwriter wieder in die Konfigurationsdatei der anderen Applikation und alles ist prima.
 
Soweit würde das ja alles kein Problem darstellen, aber die andere Anwendung kriegt das doch nicht mit ob ich die app.config nun geändert habe oder nicht! Die wird doch nur beim kompilieren mit eingebunden (wenn ich das richtig verstanden habe)... Ich kann ja nicht jedes mal nachdem ich mit dem anderen GUI-Tool die conf des Konsolenprogramms angepasst habe die andere Anwendung kompilieren...
 
Nein, die app.config wird nicht in das Programm kompiliert. Das würde auch keinen Sinn machen, da du darin ja deine ganzen Einstellungsvariablen anlegen sollst. Wäre dem so, kommt es einem Hardcodieren gleich.

Die app.config wird nur im Ausgabeverzeichnis umbenannt in Anwendungsname.exe.config.
 
Zurück