Konfigurationseinstellungen außer Kraft setzen

9

Ich habe eine Konfigurationsdatei, die in mehreren Projekten verwendet wird, general.config , sieht so aus:

%Vor%

In einem der Projekte muss ich eine der beiden Einstellungen überschreiben. So sieht die app.config dieses Projekts folgendermaßen aus:

%Vor%

Aber remove funktioniert hier nicht. Wie kann ich mykey1 außer Kraft setzen, ohne mykey2 zu brechen? add funktioniert in diesem Fall. Ich kann myvalue3 von ConfigurationManager erhalten.

EDIT: general.config wird beim Kompilieren automatisch in den Ausgabeordner kopiert. Mach dir keine Sorgen über das Pfadproblem. Zur Zeit habe ich:

%Vor%     
Danny Chen 29.06.2011, 06:01
quelle

4 Antworten

2

Ein Freund von mir hat diese Frage beantwortet. Von MSDN :

  

Sie können das Dateiattribut verwenden   Spezifizieren Sie eine Konfigurationsdatei, die   bietet zusätzliche Einstellungen oder   überschreibt die Einstellungen, die sind   im appSettings-Element angegeben.   Sie können das Dateiattribut in verwenden   Source-Control-Team-Entwicklung   Szenarien, beispielsweise wenn ein Benutzer möchte   um die Projekteinstellungen zu überschreiben   sind in einer Anwendung angegeben   Konfigurationsdatei. Aufbau   Dateien, die in einer Datei angegeben sind   Attribut muss die appSettings haben   Element statt Konfiguration   Element als Wurzelknoten.

In dieser Frage überschreiben die Einstellungen in general.config also die Elemente in app.config , die sich von denen, die ich denke (wollen) app.config items übersteuert, in general.config . Jetzt denke ich, ich muss dieses Problem in C # -Code beheben (es wird unvermeidlich hässlich aussehen).

    
Danny Chen 29.06.2011, 07:08
quelle
0

Die Elemente werden vom untergeordneten Element geändert, und das, was ich damit meine, ist Ihre app.config ist die übergeordnete Datei und die Werte werden durch die in General.config

vorhandenen Werte ersetzt

Da Sie remove in der übergeordneten Datei verwenden, entfernen Sie das Element, das Sie in app.config angegeben haben, aber danach werden die Elemente aus general.config eingefügt. Sagen Sie jetzt hier in General.config Entfernen Sie mykey3 , das sich in Ihrer app.config befindet. Sie werden sehen, dass die letzte Sammlung keinen Schlüssel als mykey3 hat.

Kurz gesagt, das wird nicht funktionieren. Hoffe das hat dir geholfen.

    
V4Vendetta 29.06.2011 06:19
quelle
0

Sie können eine weitere Konfigurationsdatei hinzufügen, zB Test.config.

%Vor%

und in der app.config Appsettings Abschnitt wird wie folgt aussehen

%Vor%     
Mahesh KP 29.06.2011 07:34
quelle
0

Die Verwendung des Attributs file zum Laden allgemeiner Einstellungen mit der Erwartung, dass Schlüssel, die direkt zum Element <appSettings> hinzugefügt werden, diese allgemeinen Einstellungen überschreiben würden, ist verständlich, aber leider funktioniert das nicht.

Microsoft wollte, dass das Attribut file allgemeine Einstellungen lädt, die die Einstellungen der einzelnen Anwendungen überschreiben.

Dies wird ausführlich in erläutert Microsoft-Dokumentation

Um dieses Problem zu beheben, deklarieren wir sehr selten Basiseinstellungen in der allgemeinen Datei und dann entsprechend benannte Überschreibungen in der Anwendungskonfiguration. Dies erfordert jedoch zusätzlichen Code, der ein bisschen hässlich ist. z.B.

%Vor% %Vor%     
Rob 15.11.2017 14:02
quelle

Tags und Links