Ich wollte diesen zitierten Text als Referenz hinzufügen, wenn ich dieses Problem in Zukunft habe. Angeblich können Sie die ApplicationSettings-Infrastruktur anweisen, Einstellungen aus einer früheren Version zu kopieren, indem Sie Upgrade aufrufen :
Properties.Settings.Value.Upgrade();
Aus dem FAQ- Blogbeitrag zu den Kundeneinstellungen: ( Archiv )
F: Warum enthält der Pfad user.config eine Versionsnummer? Wenn ich eine neue Version meiner Anwendung bereitstelle, verliert der Benutzer dann nicht alle Einstellungen, die in der vorherigen Version gespeichert wurden?
A: Es gibt mehrere Gründe, warum der Pfad user.config versionierungsabhängig ist.
(1) Um die parallele Bereitstellung verschiedener Versionen einer Anwendung zu unterstützen (Sie können dies beispielsweise mit Clickonce tun). Es ist möglich, dass für verschiedene Versionen der Anwendung unterschiedliche Einstellungen gespeichert werden.
(2) Wenn Sie eine Anwendung aktualisieren, wurde die Einstellungsklasse möglicherweise geändert und ist möglicherweise nicht mit den gespeicherten Daten kompatibel, was zu Problemen führen kann.
Wir haben es jedoch einfach gemacht, Einstellungen von einer früheren Version der Anwendung auf die neueste Version zu aktualisieren. Rufen Sie einfach
ApplicationSettingsBase.Upgrade () auf, um Einstellungen aus der vorherigen Version abzurufen, die mit der aktuellen Version der Klasse übereinstimmen, und speichern Sie sie in der Datei user.config der aktuellen Version. Sie haben auch die Möglichkeit, dieses Verhalten entweder in Ihrer Einstellungsklasse oder in Ihrer Provider-Implementierung zu überschreiben.
F: Okay, aber woher weiß ich, wann ich Upgrade anrufen soll?
A: Gute Frage. Wenn Sie in Clickonce eine neue Version Ihrer Anwendung installieren, erkennt ApplicationSettingsBase diese und aktualisiert die Einstellungen für Sie automatisch, sobald die Einstellungen geladen sind. In Fällen ohne Clickonce gibt es kein automatisches Upgrade - Sie müssen Upgrade selbst aufrufen. Hier ist eine Idee, um zu bestimmen, wann Upgrade aufgerufen werden soll:
Haben Sie eine boolesche Einstellung namens CallUpgrade und geben Sie den Standardwert true an. Wenn Ihre App gestartet wird, können Sie Folgendes tun:
if (Properties.Settings.Value.CallUpgrade)
{
Properties.Settings.Value.Upgrade();
Properties.Settings.Value.CallUpgrade = false;
}
Dadurch wird sichergestellt, dass Upgrade () nur beim ersten Ausführen der Anwendung nach der Bereitstellung einer neuen Version aufgerufen wird.
Ich glaube keine Sekunde lang, dass es tatsächlich funktionieren könnte - Microsoft würde diese Fähigkeit auf keinen Fall bereitstellen, aber die Methode ist genauso.