Ich habe eine Konfigurationsdatei, die in mehreren Projekten verwendet wird, general.config
, sieht so aus:
In einem der Projekte muss ich eine der beiden Einstellungen überschreiben. So sieht die app.config
dieses Projekts folgendermaßen aus:
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:
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).
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.
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%Tags und Links configuration .net c# app-config