ConfigurationManager.RefreshSection
funktioniert möglicherweise für Sie.
Nehmen wir an, Sie haben die folgende Konfigurationsdatei:
%Vor% Lasst uns zuerst den naiven Ansatz ausprobieren. Die folgende Anwendung versucht, den Wert von appSetting
namens test
einmal pro Sekunde zu erfassen und ihren Wert zu drucken:
Aber leider! Während dies ausgeführt wird, werden Sie feststellen, dass 1
weiterhin gedruckt wird und keine Änderungen übernommen werden.
Wenn Sie Ihren Code auf Folgendes aktualisieren, wird dieses Problem behoben und Änderungen werden immer dann übernommen, wenn Sie sie ändern:
%Vor%Ja, es ist möglich ... abhängig von WIE Sie auf Ihre Konfigurationsdatei zugreifen.
Wenn Sie sich auf das Standardverhalten verlassen, lautet die Antwort NEIN .
Wenn Sie jedoch über die Eigenschaft static
der für Ihr Projekt üblichen Methode auf die Konfiguration zugreifen, ist es möglich, sie erneut zu laden.
Ich habe das Code-Snippet jetzt nicht bei mir, aber ich habe etwas Ähnliches selbst mit einem FileSystemWatcher
, um Änderungen in der config
-Datei zu erkennen.
Es gibt eine Einschränkung, es funktioniert nur mit Eigenschaften, auf die Sie direkt über Ihren Code zugreifen, die automatische Konfiguration wird nicht neu geladen, wenn Sie so etwas tun.
Ich habe tatsächlich die Lösung für das gegebene Problem gefunden. Im Folgenden finden Sie einige Codezeilen, wie dies möglich ist:
%Vor%Der entscheidende Punkt hier ist die AppDomainSetup-Klasse, mit der Sie die Eigenschaft configurationfile für die zu erstellende Assembly festlegen können. Jetzt können wir die Konfigurationsdatei "Target_Config.exe.config" auf Änderungen überwachen. Wenn es geändert wird, sollte die oben erstellte Appdomain entladen und dann neu erstellt werden.
Tags und Links configuration .net c# configuration-files