Ich habe eine kleine GUI für die Verwaltung einiger Einstellungen in einer app.config-Datei gemacht. Die GUI wird als Teil meines Produkts veröffentlicht, wodurch es möglich ist, Werte in der Datei app.config zu ändern, ohne diese in einem Texteditor zu öffnen.Vermeiden versionsspezifische Informationen in configSection in app.config
Die Eigenschaften werden in einer benutzerdefinierten configSection implementiert, wodurch der Code stark typisiert wird. Mein Problem ist, dass, wenn die app.config-Datei aktualisiert wird (wenn ich von der GUI zu speichern), der vollständig qualifizierte Name meiner Montage in der configSection wie folgt geschrieben wird:
<section name="ConfigurationSettings" type="PerformanceDude.MSBuildShellExtension.Common.ConfigurationSettings, Common, Version=2.2.1.0, Culture=neutral, PublicKeyToken=1ab1b15115e63xxx" />
Wenn ich diese Versammlung ein Upgrade auf Eine neue Versionsnummer, die Version der GUI-Code-Assemblierung stimmt nicht mehr mit den Assembly-Referenzen in der app.config überein. Diese
ist, wie ich die Einstellungen laden:
var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = ConfigFilePath }, ConfigurationUserLevel.None);
var settings = Config.GetSection("ConfigurationSettings") as ConfigurationSettings;
Dies ist, wie ich die Einstellungen zu speichern:
config.Save(ConfigurationSaveMode.Minimal, true);
Ich will nicht ein Upgrade-Skript ändert die Version jedes Mal wenn ich Update schreiben . Kennt jemand eine großartige Lösung für dieses Problem?
Ist es möglich, den Code, den Sie zum Serialisieren und Speichern der Konfiguration verwenden, einzubinden? – dash
Der Lade- und Speichercode ist jetzt in der Beschreibung :) – ThomasArdal
Haben Sie jemals eine Lösung gefunden? – Zoomzoom