ApplicationSettingsBase.Upgrade () Aktualisieren der Benutzereinstellungen nach dem erneuten Kompilieren mit .NET 4.0 nicht

8

Ich habe ein C # -Programm, das den Standard ApplicationSettingsBase verwendet, um seine Benutzereinstellungen zu speichern. Dies funktionierte unter .NET 3.5 gut. Und die bereitgestellte Upgrade() -Methode würde diese Einstellungen "neu laden", sobald eine neue Version meines Programms erstellt wurde.

Vor kurzem habe ich das Programm mit .NET 4.0 neu kompiliert. Die Versionsnummer meines Programms wurde ebenfalls erhöht. Aber wenn ich diese Version starte, scheint Upgrade() keine vorherigen Einstellungen zu finden und lädt sie nicht neu. Es beginnt leer.

Als Test habe ich noch einmal rekompiliert, zurück zu .NET 3.5. Und diesmal hat die Methode Upgrade() wieder funktioniert.

Gibt es eine Möglichkeit, Upgrade() beim Wechseln von Frameworks zu verwenden? Gibt es noch etwas, das mir fehlt?

    
Mageuzi 27.04.2010, 14:49
quelle

2 Antworten

6

Ich hatte genau das selbe Problem, und ich habe das mehrmals aus .NET 3.5 erneut nach .NET 4.0 getestet.

Leider ist meine Lösung in vb.net, aber ich bin sicher, dass Sie eines der vielen Konvertierungsprogramme verwenden können, um dies in c # zu sehen, wie zB Ссылка

Es umfasst das Auflisten aller Ordner in % AppData% \ CompanyName , um die letzte user.config -Datei in einem Ordnernamen der Version zu finden, von der Sie ein Upgrade durchführen möchten .

Ich habe festgestellt, dass die Neukompilierung meiner App unter .NET 4.0 unter Visual Studio 2010 einen neuen Ordner mit dem Namen % AppData% \ CompanyName \ AppName.exe_Url_blahbahblah erstellen würde, obwohl ich absolut keine anderen Einstellungen geändert habe Code überhaupt!

Alle früheren Releases vor .NET 4.0 behielten den gleichen Ordnernamen und wurden erfolgreich aktualisiert. Das Kopieren der alten user.config-Datei (und des Versionsordnernamens) aus dem alten Ordner in die neue unter .NET 4.0 erstellte Ordnerstruktur (mit dem alten Versionsordnernamen) behebt das Problem - es wird jetzt aktualisiert.

In diesem Beispiel wird davon ausgegangen, dass Sie eine Benutzereinstellung mit dem Namen IUpgraded haben, die standardmäßig auf Falsch gesetzt ist (und später auf True gesetzt wird), um festzustellen, ob die Einstellungen initial sind Default-Werte oder nicht - Sie können stattdessen jede andere von Ihnen erstellte Variable verwenden. Das Beispiel zeigt ein Upgrade von Version 1.2.0.0 auf etwas später, das Sie ändern können, indem Sie den Wert von lastVersion ändern.

Der Code wird oben im Formular Load-Ereignis der letzten (.NET 4.0) -Anwendungsversion eingefügt:

%Vor%     
Richard Lailey 28.12.2010 17:16
quelle
4

Hier ist der Code.

%Vor%

Möge dir das helfen:)

    
Igor Shakola 19.10.2012 12:51
quelle

Tags und Links