Visual Studio-Einstellungsdatei - wie funktioniert es?

Ich verstehe die folgenden Dinge nicht:

Was ist der Unterschied zwischen app.config (applicationname.exe.config) und Einstellungsdatei?Ich kann die * .settings-Datei im Windows7 AppData-Verzeichnis unter dem angegebenen Konto nicht finden (ich habe gehört, dass sie sich irgendwo dort befinden sollte).Nehmen wir an, dass sich die * .settings-Datei irgendwo auf der Festplatte befindet. Warum werden während der Entwicklungszeit die Daten aus der Einstellungsdatei in die Anwendungskonfigurationsdatei kopiert?

Mit freundlichen Grüßen PK

Antworten auf die Frage(2)

die für die Anwendung von Bedeutung sind, und gilt für alle Sitzungen der Anwendung. Die * .settings-Datei enthält normalerweise Einstellungen, die für die Verwendung einer Anwendung durch einen bestimmten Benutzer spezifisch sind.

Versuchen Sie, im Verzeichnis Anwendungsdaten unter Lokale Einstellungen [«Benutzername» \ Lokale Einstellungen \ Anwendungsdaten \ «Anwendungsname ...» nachzuschlagen, anstatt im direkten Anwendungsdatenverzeichnis des Benutzers [«Benutzername» \ Anwendungsdaten].

Die Kopie der Einstellungen in der Datei app.config für eine bestimmte * .settings-Datei wird zum Initialisieren verwendet, wenn diese Einstellungen zum ersten Mal verwendet werden. Dies gilt auch für den Fall, dass eine neue Einstellung hinzugefügt wird und eine frühere Kopie der * .settings-Datei noch nicht über die neue Einstellung verfügt.

Hier ist ein Link für eine kurze Einführung in die Einstellungen in C #.

Verwenden von Einstellungen in C # (MSDN)

 pkolodziej16. Juni 2009, 19:24
Ist es möglich, dass die Einstellungsdatei in die Assembly selbst eingebettet wird?
 pkolodziej16. Juni 2009, 19:06
Es ist wirklich nicht da! Kennen Sie ein Tool, mit dem ich überwachen kann, woher die exe-Datei liest?
 meklarian16. Juni 2009, 19:01
Versuchen Sie stattdessen «Benutzername» \ AppData \ Local. Dieser Ordner ist möglicherweise ausgeblendet, sollte aber dennoch vorhanden sein. Sie können ausgeblendete Elemente in der Ansicht für den Explorer deaktivieren.
 pkolodziej16. Juni 2009, 18:28
Das Problem ist, dass die Einstellungsdatei nicht vorhanden ist. Es gibt kein App-Verzeichnis unter: «Benutzername» \ Lokale Einstellungen \ Anwendungsdaten \: / Ich verwende Windows 7.
 Ohad Schneider09. Jan. 2010, 03:40
Im Allgemeinen kann Everything Search Engine (voidtools.com) macht einen tollen Job. Eigentlich macht es einen tollen Job, auch wenn Sie bereits wissen, wo sich die Datei befindet (es istDas schnell)
 meklarian16. Juni 2009, 20:06
Entschuldigung, noch eine Sache. Die Einstellungsdatei wird standardmäßig in der Datei user.config gespeichert, nicht in einer Datei mit dem Namen .settings. Das könnte Sie abschrecken, wenn Sie nach Dateien mit dieser Erweiterung suchen.
 Vipul20. Dez. 2016, 10:36
Überprüfen Sie den Gültigkeitsbereich der Einstellung. Wenn die Einstellung anwendungsweit ist, ist sie schreibgeschützt. Die Werte werden aus der Konfigurationsdatei abgerufen und keine Datei erstellt.
 meklarian16. Juni 2009, 19:49
Können Sie versuchen, den Windows Explorer zu öffnen und "shell: Local AppData" (ohne Anführungszeichen) als Speicherort / Adresse einzugeben? Wohin führt es Sie, wenn Sie diesen Pfad betreten? Suchen Sie außerdem nach dem Firmennamen, den Sie zum Registrieren Ihres Copy Visual Studio verwendet haben. Standardmäßig wird dieser Firmenname in Ihre AssemblyInfo-Datei geschrieben und verwendet, um die Einstellungen für die von Ihnen erstellten Anwendungen festzulegen.

Standardeinstellungen sind im gespeichert<exename>.config Datei im selben Verzeichnis wie die ausführbare Datei.

Der Grund, warum Sie die Datei user.config nicht finden können, ist, dass sie nur erstellt wird, wenn Sie Änderungen an den Standardeinstellungen vorgenommen haben. Die Benutzereinstellungen überschreiben die Standardeinstellungen, die im Internet gespeichert sind<exename>.config Datei.Wenn keine Änderungen vorgenommen wurden, ist keine Benutzerkonfigurationsdatei vorhanden. Und ... sobald es existiert, werden Sie feststellen, dass nur die Einstellungen, die geändert wurden, in der Datei user.config angezeigt werden.

Um dies zu testen, erstellen Sie eine Dummy-Variable mit dem Namen "temp" in Ihrer Einstellungsdatei. Wenn Sie Ihre Anwendung starten, gehen Sie wie folgt vor:

<code>Settings1.Default.temp = Settings1.Default.temp + 1;
Settings1.Default.Save();
</code>

Sie haben jetzt eine Datei mit dem Namen user.config im ApplicationData-Ordner des Benutzers erstellt, der sich unter Vista befindet in:C:\Users\<username>\AppData\Local\<company>\<productname>

Hier ist ein Code, den ich geschrieben habe, um herauszufinden, wo sich die verschiedenen SpecialFolders auf verschiedenen Betriebssystemen befinden. (Möglicherweise möchten Sie einen Find-Replace-Vorgang für durchführenlog.Debug und ersetzen mitConsole.WriteLine)

<code>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 ));
</code>

Ausgabe unter Windows Server 2003:

<code>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"
</code>

Ausgabe unter Vista:

<code>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"
</code>
 TonyG08. März 2015, 09:07
Fügen Sie hier ein kleines Extra an Informationen hinzu. Da es sich bei der Frage um Visual Studio handelt, hielt ich es für angebracht, zu erwähnen, dass "<company>" Microsoft_Corporation sein könnte. Als Beispiel habe ich hier Einstellungen für mein aktuelles Projekt in der Entwicklung gefunden: "C: \ Users \ tony \ AppData \ Local \ Microsoft_Corporation \ DefaultDomain_Url_o3ghzq4nzylalqdtx0msfcg4cilbn2mv \ 12.0.31101.0 \ user.config" Dies ist VS2013.

Ihre Antwort auf die Frage