10 Stimmen

Konfigurationsdateien für Baugruppen im GAC

Ich habe eine .NET-DLL, die ihre Konfigurationseinstellungen aus ihrer Konfigurationsdatei lesen muss. Normalerweise ist die Config-Datei im gleichen Verzeichnis wie die DLL platziert. Aber wie lese ich die Config-Datei, wenn die DLL GAC'ed ist, weil ich nur die DLLs in der GAC, und nicht es ist Config-Dateien setzen kann.

13voto

tvanfosson Punkte 506878

Muss der Benutzer die Dll konfigurieren? Wenn ja, dann sollte die DLL die Konfigurationseinstellungen aus der Datei app.config verwenden, nicht ihre eigene Konfiguration. Die app.config-Datei sollte im gleichen Verzeichnis wie die Anwendung gespeichert werden. Ist dies nicht der Fall, gibt es mehrere Möglichkeiten. Sie könnten Änderungen an der Datei machine.config vornehmen, damit Ihre Dll sie dort finden kann. Ich würde dies nicht tun. Alternativ können Sie die Konfiguration in einer Einstellungsklasse speichern. Diese können über die Konfiguration überschrieben werden, aber Ihre Standardwerte werden im generierten Code für die Einstellungs-Klasse über Attribute festgelegt, so dass das Fehlen einer Konfigurationsdatei keine Auswirkungen auf Ihre Dll hat, wenn die Standardwerte alles sind, was erforderlich ist.

12voto

netadictos Punkte 7524

Ich stimme mit tvanfosson überein, dass die Gac'ed dll aus dem Pfad der Anwendung gelesen wird. Aber Sie könnten auch die Dll, die den Pfad auf diese Weise zu informieren:

System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "THE PATH TO THE CONFIG";
System.Configuration.Configuration cfg =
System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None);

string thevalue=cfg.AppSettings.Settings[variable].Value;

0 Stimmen

Tvanfosson hatte eine gute Antwort, aber ich denke, dies ist eine passendere Antwort.

1voto

Vinod Srivastav Punkte 3046

Sie können Folgendes nutzen AppDomain.CurrentDomain.BaseDirectory da die DLL-Bibliothek nicht selbst ausgeführt wird, müssen Sie nur das Verzeichnis der ausführbaren Datei abrufen, die ihn aufruft

Etwa so:

var appDomain = AppDomain.CurrentDomain.BaseDirectory;
string sFileName = appDomain.Replace("\\bin\\Debug", "");
sFileName = sFileName + "Config\\config.xml";

Hier befindet sich meine ausführbare Datei im Ordner bin\Debug und innerhalb dieses Ordners habe ich einen Ordner namens Config wo ich die xml-Konfigurationsdatei habe config.xml . Also die sFileName liefert Ihnen den relativen Pfad zur Konfigurationsdatei als \bin\Debug\Config\config.xml

0 Stimmen

Sorry, da es das erste Mal ist, dass ich hier antworte der Code ist nicht gut formatiert :(

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X