UPDATE: In ASP.NET Core - Land, Konfiguration wird nicht verwaltet mehr über einer dieser - sieht diese fantastische writeup von Travis Illig mit dem az auf Microsoft.Extension.Configuration
und Microsoft.Extensions.Configuration.Binder
welche effektiv ein Ober aller diesem
Einstellungen (sowohl aus einem .settings-Set als auch aus Configuration.AppSettings
) werden in der .config-Datei gespeichert [neben vielen anderen Dingen].
Der Unterschied besteht darin, dass das .settings-Material [das in .NET 2.0 / VS2005 hinzugefügt wurde] eine stark typisierte Klasse über eine Reihe von Einstellungen legt, die zusammengehören, während Sie Configuration.AppSettings
nur Zeichenfolgen abrufen können, um Konvertierungen zu erzwingen, und dies nicht tun habe den Begriff der Standardeinstellungen. (Die Konfigurationsklasse wurde tatsächlich in eine Seitenbaugruppe verschoben, um dies widerzuspiegeln. Sie müssen explizit einen Verweis auf System.Configuration hinzufügen, wenn Sie dies wünschen.)
Wenn Sie Ihrem Projekt eine .settings hinzufügen, wird eine app.config hinzugefügt, in der die Einstellungen gespeichert werden, falls Sie noch keine haben. Die Klasse, die die Einstellungen liest, wird jedes Mal automatisch generiert, wenn Sie die Liste der Einstellungen für Ihre Komponente / Anwendung ändern.
Weitere Funktionen von .Settings sind die Möglichkeit, einige Einstellungen als benutzerspezifisch festzulegen (und die benutzerspezifischen Einstellungen mit einem einzigen Aufruf zu speichern).
Der beste Grund für die Verwendung von .Settings ist im Allgemeinen, dass Sie anhand der Verwendung von Eigenschaften eindeutig erkennen können, wer welche Einstellung in einer Codebasis verwendet (und jeder Satz ist ein separater Block in der XML-Datei). Configuration.appSettings
ist von Natur aus globaler - es ist nur eine Tüte mit Eigenschaften und Sie wissen nicht, welche DLL, welches Subsystem oder welche Klasse von einem bestimmten Einstellungseintrag abhängt. Weitere Informationen finden Sie in diesem Blogbeitrag von Steven Smith .
Wenn Sie immer noch nicht genug über das Einstellungsmanagement gelesen haben, werden Sie diesen Beitrag von Rick Strahl zu diesem Thema nicht der Vollständigkeit halber oder in einer Vielzahl von Ideen und Blickwinkeln schlagen .
ASIDE: Es gibt auch das in diesem Artikel beschriebene ASP.NET vNext-Konfigurationsmaterial , das sehr flexibel ist und einen anderen Blickwinkel auf die Verwaltung von Konfigurationseinstellungen bietet.
.settings
Datei definiert nur das Schema und wird in einen Codebehind kompiliert. Die tatsächlichen Werte befinden sich in der.config
Datei, die sich in einem Benutzerprofilverzeichnis befindet (Nichtbenutzer sind nicht beschreibbar). Die Daten befinden sich an derselben Stelle, anConfigurationManager.AppSettings
der sie sich befinden. Sie haben lediglich ein benutzerdefiniertes Format mit einer stärkeren Eingabe. Sie können Dinge wie tun,ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.PerUserRoamingAndLocal ).FilePath
aber bevor ich Ihnen das sage ... warum?Eine Einstellungsdatei ist eine Ressourcendatei, in der Sie die verschiedenen Einstellungen und ihren Standardwert angeben.
Die Werte selbst werden in der Anwendungskonfigurationsdatei (.config-Datei) konfiguriert.
Eine Einstellungsdatei wird niemals bereitgestellt, daher benötigen Sie die Konfigurationsdatei, um die Konfiguration durchzuführen.
quelle
Die Datei app.config wird im selben Verzeichnis wie die App gespeichert. Normale Benutzer haben keine Schreibberechtigung (z. B. in "Programme").
Die Einstellungsdatei sollte im Verzeichnis "AppData" des Benutzers gespeichert sein (wo er über R / W-Berechtigungen verfügt).
Verwenden Sie daher die Einstellungsdatei für vom Benutzer konfigurierbare Optionen.
quelle
.settings
(und dieSettings
Unterstützung von Visual Studio ) können sowohl für die einmalige Anwendungskonfiguration als auch für die Konfiguration pro Benutzer verwendet werden..settings
existiert zur Laufzeit nicht; Was zur Laufzeit vorhanden ist, befindet sichapp.config
im App-Ordner und [Benutzer].config
im Datenordner des Benutzers.