2009-06-16 22 views
6

Nie rozumiem następujące rzeczy:Plik ustawień Visual Studio - jak to działa?

  1. Jaka jest różnica między app.config (applicationname.exe.config) i ustawienia pliku?
  2. Nie mogę zlokalizować pliku * .settings w katalogu AppData systemu Windows7 pod określonym kontem (słyszałem, że powinien on znajdować się gdzieś tam)?
  3. Załóżmy, że plik * .settings znajduje się gdzieś na dysku twardym. Dlaczego w czasie programowania dane z pliku ustawień są kopiowane do pliku konfiguracyjnego aplikacji?

poważaniem PK

Odpowiedz

0
  1. pliku app.config reprezentuje ustawienia właściwych dla aplikacji i będą miały zastosowanie do wszystkich sesji aplikacji. Plik * .settings zazwyczaj dotyczy ustawień specyficznych dla danego użytkownika aplikacji.

  2. Spróbuj wyszukać w katalogu danych aplikacji pod Ustawienia lokalne [nazwa użytkownika »\ Ustawienia lokalne \ Dane aplikacji \« nazwa aplikacji ... »], zamiast bezpośredniego katalogu danych aplikacji użytkownika [« nazwa użytkownika »\ Dane aplikacji ].

  3. Kopia ustawień w pliku app.config dla danego pliku * .settings służy do zainicjowania go przy pierwszym użyciu tych ustawień; w tym przypadku, gdy dodano nowe ustawienie, a wcześniejsza kopia pliku * .settings nie ma jeszcze nowego ustawienia.

Oto link do krótkiego przejrzenia ustawień w języku C#.

Using Settings in C# (MSDN)

+0

Problem polega na tym, że plik ustawień nie istnieje. Nie ma katalogu aplikacji pod: «nazwa użytkownika» \ Ustawienia lokalne \ Dane aplikacji \:/Używam systemu Windows 7. – pkolodziej

+0

Zamiast tego wypróbuj "username" \ AppData \ Local. Ten folder może być ukryty, ale powinien istnieć tak czy inaczej. Możesz usunąć ukryte elementy w widoku Eksploratora. – meklarian

+0

To naprawdę nie jest! Czy znasz jakieś narzędzie, które można użyć do monitorowania, skąd plik exe czyta? – pkolodziej

5

Więc domyślne ustawienia są przechowywane w pliku <exename>.config znajduje się w tym samym katalogu co plik wykonywalny.

Powód, dla którego nie można znaleźć pliku user.config, jest tworzony tylko wtedy, gdy wprowadzono zmiany w wartościach domyślnych. Ustawienia użytkownika zastępują ustawienia domyślne, które są przechowywane w pliku <exename>.config. Jeśli nie wprowadzono żadnych zmian, plik konfiguracyjny użytkownika nie będzie istnieć. A ... gdy już istnieje, zauważysz, że tylko ustawienia, które zostały zmienione, pojawią się w pliku user.config.

Aby to przetestować ... utwórz zmienną typu dummy o nazwie temp w swoim pliku ustawień. Po uruchomieniu aplikacji należy:

Settings1.Default.temp = Settings1.Default.temp + 1; 
Settings1.Default.Save(); 

Będziesz teraz mieć plik o nazwie user.config utworzony w folderze użytkownika ApplicationData który na Vista znajduje się w: C:\Users\<username>\AppData\Local\<company>\<productname>

Oto kod, który napisałem, aby pomóc zidentyfikować gdzie wszystkie różne SpecialFoldery w różnych systemach operacyjnych.(Chcieć zrobić Find-wymienić na log.Debug i zastąpić Console.WriteLine)

log.Debug("SpecialFolder.ApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
log.Debug("SpecialFolder.CommonApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); 
log.Debug("SpecialFolder.ProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)); 
log.Debug("SpecialFolder.CommonProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)); 
log.Debug("SpecialFolder.DesktopDirectory: " + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); 
log.Debug("SpecialFolder.LocalApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); 
log.Debug("SpecialFolder.MyDocuments: " + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); 
log.Debug("SpecialFolder.System: " + Environment.GetFolderPath(Environment.SpecialFolder.System)); 

Wyjście W systemie Windows Server 2003:

SpecialFolder.ApplicationData: "C:\Documents and Settings\blake\Application Data" 
SpecialFolder.CommonApplicationData: "C:\Documents and Settings\All Users\Application Data" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Documents and Settings\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Documents and Settings\blake\Local Settings\Application Data" 
SpecialFolder.MyDocuments: "C:\Documents and Settings\blake\My Documents" 
SpecialFolder.System: "C:\WINDOWS\system32" 

Wyjście na Vista:

SpecialFolder.ApplicationData: "C:\Users\blake\AppData\Roaming" 
SpecialFolder.CommonApplicationData: "C:\ProgramData" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Users\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Users\blake\AppData\Local" 
SpecialFolder.MyDocuments: "C:\Users\blake\Documents" 
SpecialFolder.System: "C:\Windows\system32" 
+1

Dodanie tutaj niewielkiej dodatkowej informacji. Ponieważ pytanie dotyczy Visual Studio, pomyślałem, że warto wspomnieć, że "" może być Microsoft_Corporation. Tak na przykład, po prostu znalazłem ustawienia dla mojego obecnego projektu w rozwoju tutaj: "C: \ Users \ Tony \ AppData \ Local \ Microsoft_Corporation \ DefaultDomain_Url_o3ghzq4nzylalqdtx0msfcg4cilbn2mv \ 12.0.31101.0 \ user.config" To VS2013. – TonyG

Powiązane problemy