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.configi 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.configw 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.configplik 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.configi 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.configpliku). Jeśli zmienisz ustawienie, edytując app.configplik bezpośrednio, Settings.csnie zostanie zaktualizowany, ale nowa wartość będzie nadal używana przez program po uruchomieniu, ponieważ app.configzostanie skopiowana do foo.exe.configw 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.configpliku (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.confignp 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.configplików wygląda mniej więcej tak:
<Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.configgdzie
<Profile Directory>- jest katalogiem profilu mobilnego lub katalogiem lokalnym. Ustawienia są domyślnie przechowywane wuser.configpliku lokalnym . Aby zapisać ustawienia w roaminguuser.configpliku, należy zaznaczyć ustawienie zSettingsManageabilityAttributepomocąSettingsManageabilityzestawu 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?