2010-02-04 11 views
8

Mam aplikację Windows, która używa zespołu, który przechowuje niektóre ustawienia konfiguracji w domyślnych ustawieniach aplikacji.Dlaczego nieprzeładowane ustawienia użytkownika nie są załadowane?

ustawienia mogą być zmieniane w czasie wykonywania i są zachowywane tak:

Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort; 
Properties.Settings.Default.Save(); 

Ustawienia są zapisane poprawnie i potwierdzam to, patrząc na pliku user.config zapisanego w katalogu aplikacji użytkownicy Np

C:\Documents and Settings\e399536\Local Settings\Application Data\MyCompany\MyTool 

Jednak po zamknięciu i ponownym uruchomieniu narzędzia wszystkie ustawienia zostają załadowane z wartościami domyślnymi.

Sprawdzanie pliku user.config po uruchomieniu aplikacji potwierdza, że ​​ustawienia są nadal zapisane.

Ustawienia są ładowane w ten sposób:

options.SelectedCOMPort = Properties.Settings.Default.SelectedCOMPort; 

Czemu ustawienia domyślne używane i nie zbawionych?

Czy coś przeoczyłem?

@ Tenaciouslmpy Ustawienia są ładowane podczas konstruktora złożenia, który sam jest ładowany w zdarzenie obciążenia formularza głównego zespołu.

@ Austin To jest samodzielna aplikacja, którą debuguję w Visual Studio.

+0

Czy możesz opublikować kod, w którym ładujesz ustawienia ciągów? –

+0

Kiedy ładujesz ustawienia? Jakie wydarzenie w cyklu życia Form? – keyboardP

+0

Czy to z samodzielnej instalacji, czy z IDE? –

Odpowiedz

10

Jeśli rekompilacji aplikacji między przebiegów, należy pamiętać, że będzie to pod uwagę, że w nowej wersji aplikacji i nie automatycznie załadować ustawień użytkownika. W tej sytuacji musisz wywołać funkcję Settings.Default.Upgrade.

Jednym ze sposobów, aby to zrobić tylko w razie potrzeby, jest dodanie ustawienia NeedsUpgrade (wartość True) do domyślnych ustawień aplikacji na użytkownika. Podczas uruchamiania aplikacji sprawdź, czy NeedsUpgrade ma wartość true. Jeśli tak, zadzwoń na Upgrade, ustaw NeedsUpgrade na False i zapisz ustawienia. Następnym razem, gdy zmieni się wersja aplikacji, NeedsUpgrade zresetuje się do wartości True i automatycznie uruchomi aktualizację, aby przywrócić wszystkie istniejące ustawienia użytkownika.

Upewnij się, że ustawiasz NeedsUpgrade po, wywołując uaktualnienie, lub zostanie on usunięty, gdy ustawienia zostaną uaktualnione.

if (Settings.Default.NeedsUpgrade) 
{ 
    Settings.Default.Upgrade(); 
    Settings.Default.NeedsUpgrade = false; 
    Settings.Default.Save(); 
} 
+0

Nie rekompiluję, ale debuguję w IDE, który wydaje się robić to samo. W każdym przypadku wskazówka do ulepszenia() rozwiązała problem. Twoje zdrowie. – Kildareflare

+0

Mam problem z sesją debugowania w IDE (VS.2015) Ustawienia są przywracane do wartości domyślnych.Zaimplementowałem podpowiedź NeedUpgrade, ale problem nadal istnieje. –

+1

Właśnie przetestowałem to w społeczności VS 2015 i nadal działa dla mnie. Zauważ, że wygląda na to, że zachowanie jest trochę mądrzejsze w dzisiejszych czasach; nie zresetuje NeedUpgrade do wartości true, chyba że zmieni się wersja złożenia; samo przebudowanie aplikacji już tego nie zrobi. – technophile

2

Wygląda na to, że debugujesz aplikację z programu Visual Studio, gdy za każdym razem, gdy rozpoczynasz nową sesję, zaczynasz od danych domyślnych.

Jeśli widzisz to z zainstalowanym wydaniem, to domyślam się, że w rzeczywistości nie używasz wartości ciągu, kiedy myślisz, że jesteś.

+0

Ah, to by było to, Pozdrawiam. – Kildareflare

Powiązane problemy