W przypadku korzystania z pliku Settings.settings w .NET, gdzie faktycznie jest przechowywana konfiguracja? Chcę usunąć zapisane ustawienia, aby powrócić do stanu domyślnego, ale nie mogę znaleźć miejsca ich przechowywania ... jakieś pomysły?
W przypadku korzystania z pliku Settings.settings w .NET, gdzie faktycznie jest przechowywana konfiguracja? Chcę usunąć zapisane ustawienia, aby powrócić do stanu domyślnego, ale nie mogę znaleźć miejsca ich przechowywania ... jakieś pomysły?
Odpowiedzi:
Zależy to od tego, czy wybrane ustawienie jest w zakresie „Użytkownik” czy „Aplikacja”.
Ustawienia zakresu użytkownika są przechowywane w pliku
C: \ Documents and Settings \ nazwa użytkownika \ Ustawienia lokalne \ Dane aplikacji \ Nazwa aplikacji
Możesz je czytać / zapisywać w czasie wykonywania.
W systemie Vista i Windows 7 folder to
C: \ Users \ nazwa użytkownika \ AppData \ Local \ ApplicationName
lub
C: \ Users \ nazwa użytkownika \ AppData \ Roaming \ ApplicationName
Ustawienia zakresu aplikacji są zapisywane w programie AppName.exe.config
i są dostępne tylko do odczytu w czasie wykonywania.
Oto fragment kodu, którego możesz użyć do programowego uzyskania lokalizacji pliku user.config:
public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
try
{
var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
return UserConfig.FilePath;
}
catch (ConfigurationException e)
{
return e.Filename;
}
}
ApplicationSettings (czyli settings.settings) domyślnie używa PerUserRoamingAndLocal do ustawień użytkownika (jak zapamiętałem).
Aktualizacja: Dziwne, ale jest tu zbyt wiele błędnych odpowiedzi. Jeśli szukasz pliku ustawień w zakresie użytkownika (user.config), będzie on znajdować się w następującym folderze (w systemie Windows XP):
C: \ Documents and Settings \ (nazwa użytkownika) \ Local Settings \ Application Data \ (nazwa-firmy-jeśli-istnieje) \ (nazwa-aplikacji) .exe_ (Url | StrongName) _ (hash) \ (wersja-aplikacji) \
Url lub StrongName zależy od tego, czy masz silną nazwę zestawu aplikacji, czy nie.
Zakładając, że mówisz o komputerach stacjonarnych, a nie aplikacjach internetowych:
Po dodaniu ustawień do projektu VS tworzy plik o nazwie app.config
w katalogu projektu i zapisuje ustawienia w tym pliku. Tworzy równieżSettings.cs
plik udostępniający statyczne dostępu do poszczególnych ustawień.
W czasie kompilacji VS (domyślnie; możesz to zmienić) skopiuje app.config
plik do katalogu kompilacji, zmieniając jego nazwę tak, aby pasowała do pliku wykonywalnego (np. Jeśli plik wykonywalny jest nazwany foo.exe
, plik zostanie nazwanyfoo.exe.config
). Menedżer konfiguracji .NET wyszukuje, kiedy pobiera ustawienia w czasie wykonywania.
Jeśli zmienisz ustawienie za pomocą edytora ustawień VS, zaktualizuje zarówno app.config
i Settings.cs
. (Jeśli spojrzysz na metody dostępu właściwości w wygenerowanym kodzie w programie Settings.cs
, zobaczysz, że są one oznaczone atrybutem zawierającym domyślną wartość ustawienia znajdującego się w app.config
pliku). Jeśli zmienisz ustawienie, edytując app.config
plik bezpośrednio, Settings.cs
nie zostanie zaktualizowany, ale nowa wartość będzie nadal używana przez program po uruchomieniu, ponieważ app.config
zostanie skopiowana do foo.exe.config
w czasie kompilacji. Jeśli wyłączysz tę opcję (ustawiając właściwości pliku), możesz zmienić ustawienie, bezpośrednio edytując plikfoo.exe.config
plik w katalogu kompilacji.
Następnie są ustawienia w zakresie użytkownika.
Ustawienia zakresu aplikacji są tylko do odczytu. Twój program może modyfikować i zapisywać ustawienia zakresu użytkownika, dzięki czemu każdy użytkownik może mieć własne ustawienia. Te ustawienia nie są przechowywane w foo.exe.config
pliku (ponieważ przynajmniej w systemie Vista programy nie mogą zapisywać w żadnym podkataloguProgram Files
bez ); są przechowywane w pliku konfiguracyjnym w katalogu danych aplikacji użytkownika.
Ścieżka do tego pliku to %appdata%\%publisher_name%\%program_name%\%version%\user.config
np C:\Users\My Name\AppData\Local\My_Company\My_Program.exe\1.0.0\user.config
. Zwróć uwagę, że jeśli nadałeś programowi silną nazwę, silna nazwa zostanie dołączona do nazwy programu w tej ścieżce.
Podczas przeglądania w celu ustalenia skrótu w nazwie folderu natknąłem się (za pomocą tej odpowiedzi ):
http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx
(edytuj: link Wayback Machine: https://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx )
Dokładna ścieżka
user.config
plików wygląda mniej więcej tak:
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
gdzie
<Profile Directory>
- jest katalogiem profilu mobilnego lub katalogiem lokalnym. Ustawienia są domyślnie przechowywane wuser.config
pliku lokalnym . Aby zapisać ustawienia w roaminguuser.config
pliku, należy zaznaczyć ustawienie zSettingsManageabilityAttribute
pomocąSettingsManageability
zestawu doRoaming
.
<Company Name>
- jest zwykle ciągiem określonym przezAssemblyCompanyAttribute
(z zastrzeżeniem, że ciąg jest zmieniany i skracany w razie potrzeby, a jeśli nie jest określony w zestawie, mamy procedurę rezerwową).
<App Name>
- to zazwyczaj ciąg określony przezAssemblyProductAttribute
(te same zastrzeżenia co w przypadku nazwy firmy).
<Evidence Type>
oraz<Evidence Hash>
- informacje pochodzące z dowodów domeny aplikacji w celu zapewnienia właściwej izolacji domeny aplikacji i zestawu.
<Version>
- zazwyczaj wersja określona wAssemblyVersionAttribute
. Jest to wymagane, aby odizolować różne wersje aplikacji wdrożone obok siebie.Nazwa pliku to zawsze po prostu „
user.config
”.
Znajduje się w folderze z nazwą aplikacji w folderze Application Data w folderze domowym użytkownika (C: \ documents and settings \ user na xp i c: \ users \ user w systemie Windows Vista).
Jest tu również kilka informacji .
PS: - spróbuj uzyskać do niego dostęp przez% appdata% w polu uruchamiania!
Czy nie możesz po prostu użyć Settings.Default.Reset (), aby przywrócić ustawienia domyślne?
Wszystkie ustawienia są przechowywane w odpowiednim pliku konfiguracyjnym.
Plik .settings po prostu zapewnia silnie wpisaną klasę dla zestawu ustawień, które należą do siebie, ale rzeczywiste ustawienia są przechowywane w pliku app.config lub .config w aplikacji.
Jeśli dodasz plik .settings, plik app.config zostanie automatycznie dodany do ustawień, jeśli jeszcze go nie masz.
Jeśli plik ustawień znajduje się w aplikacji internetowej, będą one znajdować się w pliku web.config (tuż pod projektem. Jeśli znajdują się w innym typie projektu, będą w pliku app.config (również pod Twoim projektem) .
Edytować
Jak wskazano w komentarzach: ustawienia aplikacji czasu projektowania znajdują się w pliku app.config dla aplikacji innych niż aplikacje internetowe. Podczas budowania plik app.config jest kopiowany do katalogu wyjściowego i otrzyma nazwę yourexename .exe.config. W czasie wykonywania odczytywany będzie tylko plik o nazwie yourexename.exe.config.
Dwa pliki: 1) plik app.config lub web.config. Jej ustawienia można dostosować po kompilacji za pomocą edytora tekstu. 2) Plik settings.designer.cs. Ten plik zawiera wygenerowany automatycznie kod do załadowania ustawienia z pliku konfiguracyjnego, ale wartość domyślna jest również obecna w przypadku, gdy plik konfiguracyjny nie ma określonego ustawienia.
Wiem, że odpowiedź została już odebrana, ale czy nie możesz po prostu zsynchronizować ustawień w projektancie ustawień, aby wrócić do ustawień domyślnych?