Click or drag to resize

BasicAppSettings Klasse

Holt Applikationseinstellungen aus verschiedenen Quellen: Kommandozeile, app.config, ggf. app.config.user, Environment.
Implementiert auch das Lesen der Registry, nutzt dies aber selbst noch nicht. Wertet unter Umständen zuletzt auch noch öffentliche Properties aus (DumpAppSettings=true). Macht keine Datenbank-Zugriffe, stellt aber entsprechende Properties bereit.
Die Properties und das Füllen derselben sind nicht zwingend erforderlich, sie dienen nur der Bequemlichkeit; alternativ kann aus der Applikation auch direkt über die Schnittstellen IGetStringValue und IGetValue<T> auf die Applikations-/Systemumgebung zugegriffen werden.
Die hier implementierten Applikationseinstellungen sollen allgemeingültig für Standalone-Anwendungen sein; Für anwendungsspezifische Einstellungen sollte diese Klasse abgeleitet werden. Quellen werden in folgender Reihenfolge ausgewertet (der 1. Treffer gewinnt):
1. Kommandozeilen-Parameter (nicht bei .NetCore-Webanwendungen)
2. Einstellungen in der app.Config (nicht bei .NetCore- Webanwendungen, stattdessen dann appsettings.json)
3. Ggf. Einstellungen in der app.Config.user
4. Environment
5. Registry
6. Unter Umständen öffentliche Properties (DumpAppSettings=true).
Zeitkritische Initialisierungen sollten in abgeleiteten AppSettings generell vermieden werden; die entsprechenden Properties können aber definiert werden und ggf. lazy implementiert werden.
Über die Properties "DumpAppSettings" und "DumpLoadedAssemblies" können zu Debug-Zwecken alle Properties mit ihren Quellen und die FullNames aller zur Laufzeit geladenen Assemblies geloggt werden.
Vererbungshierarchie
SystemObject
  NetEti.ApplicationEnvironmentBasicAppSettings
    Vishnu.InterchangeAppSettings

Namensraum: NetEti.ApplicationEnvironment
Assembly: NetEti.BasicAppSettings (in NetEti.BasicAppSettings.dll) Version: 1.0.0+47f2d73d44cbabd9edbd44700dbe27e722340f78
Syntax
public class BasicAppSettings : IGetStringValue, 
	IGetValue, IDisposable

Der BasicAppSettings Typ exponiert die folgenden Member.

Konstruktoren
 NameBeschreibung
Protected MethodeBasicAppSettings Konstruktor, wird ggf. über Reflection vom externen statischen GenericSingletonProvider über GetInstance() aufgerufen. Holt alle Infos und stellt sie als Properties zur Verfügung.
Zurück nach oben
Eigenschaften
 NameBeschreibung
Public EigenschaftAppConfigUser Pfad einer XML-Datei im Format der app.config mit User-spezifischen Einstellungen.
Public EigenschaftAppConfigUserInfo Info-Text mit erweiterten Status-Informationen zum Ladeversuch der AppConfigUser.
Public EigenschaftAppConfigUserLoaded True wenn eine XML-Datei im Format der app.config mit User-spezifischen Einstellungen geladen werden konnte.
Public EigenschaftAppEnvAccessor Implementiert IGetStringValue zur Kapselung von Zugriffen über konkrete Reader wie zum Beispiel CommandLineAccess, SettingsAccess, EnvAccess.
Public EigenschaftApplicationName Application.ProductName
Public EigenschaftApplicationRootPath Das Verzeichnis, in dem die Applikation gestartet wurde als absoluter Pfad.
Public EigenschaftBreakAlwaysAllowed Wenn true, kann immer abgebrochen werden - zu Debug-Zwecken.
Default: false
Public EigenschaftCheckVersion Kann ggf. bei einer spätere Versionsprüfung genutzt werden.
Default: true
Public EigenschaftClickOnceDataDirectory Verzeichnis, in dem die Installationsdaten bei einer ClickOnce-Installation (EnvAccess:ISNETWORKDEPLOYED = true) liegen.
Protected EigenschaftCommandLineAccessor Implementiert IGetStringValue für Zugriffe auf die Kommandozeile.
Public EigenschaftConnectionString Connection-String für eine Datenbank-Verbindung.
Protected EigenschaftCreatedDirectoryRoot Enthält den Pfad des untersten Verzeichnisses, das beim letzten "Directory.Create" neu angelegt wurde. Dieser
Public EigenschaftCreateWorkingDirectoryIfNotExists Bei True wird das aktuell gesetzte WorkingDirectory angelegt, wenn es noch nicht existiert.
Default: true
Public EigenschaftDataSource Der angepasste Datenbank-Server Instanz-Name.
Default: = (local)
Public EigenschaftDebugArchiveMaxCount Maximale Anzahl von archivierten Logs (DebugFiles, o.ä.). Bei Überzahl werden jeweils die ältesten gelöscht. Default: 20.
Public EigenschaftDebugArchivingInterval Zeitabstand, in dem das aktuelle Log (DebugFile, o.ä.) archiviert und geleert wird. Default: 24 Stunden.
Public EigenschaftDebugFile Pfad und Name des Logfiles
Default: WorkingDirectory + \ + ApplicationName + .log
Public EigenschaftDebugFileRegexFilter Filter, der die zu loggenden Zeilen begrenzt. Default: "" - alles wird geloggt.
Public EigenschaftDebugInfo Die zu loggenden Informationsarten
public enum InfoType
{ DEBUG, INFO, WARN, MILESTONE, ERROR, EXCEPTION, USERTYPE1, USERTYPE2 };
als String, wie z.B.: "DEBUG|INFO|WARN|MILESTONE|ERROR".
Default: wird im Startprogramm gesetzt, üblicherweise InfoType.ALL (InfoType.ALL enthält alles außer den USERTYPEn).
Public EigenschaftDebugMode Bei True können Anwendungen Debug-Ausgaben erzeugen. Default: False.
Public EigenschaftDefaultDatabase Die voreingestellte Datenbank.
Default: null
Public EigenschaftDefaultSqlDataDirectory Das Default-Verzeichnis für SQL-Server Datendateien
Public EigenschaftDefaultSqlLogDirectory Das Default-Verzeichnis für die SQL-Server Logdateien
Public EigenschaftDescription Liefert einen beschreibenden Namen dieses StringValueGetters, z.B. Name plus ggf. Quellpfad.
Public EigenschaftDumpAppSettings Bei true gibt BasicAppSettings über den InfoController am Ende der Verarbeitung alle AppSetting-Properties mit Wert und Quelle aus. Default: false.
Public EigenschaftDumpLoadedAssemblies Bei true gibt BasicAppSettings über den InfoController am Ende der Verarbeitung die Vollnamen aller in der AppDomain geladenen Assemblies aus. Default: false.
Protected EigenschaftEnvAccessor Implementiert IGetStringValue für Zugriffe auf das Environment.
Public EigenschaftFrameworkVersionMajor Die Version des höchsten installierten .Net-Frameworks
Protected EigenschaftIniAccessor Implementiert IGetStringValue für Zugriffe auf INI-Dateien.
Public EigenschaftIsClickOnce True, wenn die Anwendung per ClickOnce installiert wurde (siehe auch ClickOnceDataDirectory).
Public EigenschaftIsFrameworkAssembly True, wenn die Anwendung auf .Net-Framework basiert.
Public EigenschaftIsFullFramework True, wenn die Anwendung auf einem vollständigen .Net-Framework basiert.
Public EigenschaftIsNetCore True, wenn die Anwendung eine .Net Core-Anwendung ist.
Public EigenschaftIsNetNative True, wenn die Anwendung eine UWP-Anwendung ist.
Public EigenschaftKillChildProcessesOnApplicationExit Bei True sollen alle Child-Prozesse der Anwendung am Programmende nach einer gewissen Wartezeit rekursiv terminiert werden. Achtung: BasicAppSettings stellt nur die Property zur Verfügung. Um das Beenden der Prozesse muss sich die jeweilige Anwendung über Einbindung von NetEti.ProcessTools und Aufruf von ProcessWorker.FinishChildProcesses() selbst kümmern. Default: false.
Public EigenschaftKillWorkingDirectoryAtShutdown Bei True wird das WorkingDirectory am Programmende entfernt. Sollte aus Sicherheitsgründen nur erfolgen, wenn es beim Programmstart auch erzeugt wurde. Das Anlegen oder Löschen des WorkingDirectory erfolgt nicht durch BasicAppSettings sondern kann ggf. durch die Anwendung oder das Logging erfolgen. Default: true.
Public EigenschaftLanguage Die UI-Sprache (Systemsprache).
Public EigenschaftLogSql Wenn true, soll jeder Sql-Befehl in's Logfile geschrieben werden. Zur freien Verwendung.
Default: false
Public EigenschaftMachineName Der Rechnername
Public EigenschaftMinProgrammVersion Geforderte Mindestversion für spätere Prüfung gegen die ProgrammVersion.
Default: "1.0.0.0"
Public EigenschaftOSVersion Die komplette Betriebssystem-Version
Public EigenschaftOSVersionMajor Numerische Haupt-Betriebssystem-Version
> 5 => mindestens Vista
Public EigenschaftProcessId Die Prozess-Id des aktuellen Prozesses.
Public EigenschaftProcessor Der Prozessortyp
Public EigenschaftProcessorCount Die Anzahl Prozessoren
Public EigenschaftProgrammVersion Die aktuelle ProgrammVersion = Application.ProductVersion
Protected EigenschaftPropertyAccessor Implementiert IGetStringValue für Zugriffe auf public Properties der AppSettings.
Protected EigenschaftRegAccessor Implementiert IGetStringValue für Zugriffe auf die Registry.
Public EigenschaftRegistryBasePath Basis-Pfad, in dem in der Registry nach einer Einstellung gesucht wird. Enthält der Pfad eine der RegistryRoots, z.B. "HKEY_CURRENT_USER", wird die intern eingestellte RegistryRoot ebenfalls umgestellt. Default für die intern eingestellte RegistryRoot ist "HKEY_LOCAL_MACHINE". Default: ""
Public EigenschaftSearchDirectory Ein optionales Suchverzeichnis für verschiedene Zwecke.
Default: WorkingDirectory
Protected EigenschaftSettingsAccessor Implementiert IGetStringValue für Zugriffe auf die app.config.
Public EigenschaftSingleInstance Bei true kann die Applikation nur einmal gestartet werden.
Default: false
Public EigenschaftStatisticsFile Pfad und Name des Statistics-Logfiles
Default: WorkingDirectory + \ + ApplicationName + .stat
Public EigenschaftStatisticsFileRegexFilter Filter, der die zu loggenden Zeilen begrenzt. Default: "" - alles wird geloggt. z.B.: @"(?:_NOPPES_)" - Nichts wird geloggt, bzw. nur Zeilen, die "_NOPPES_" enthalten
Public EigenschaftTempDirectory Environment: "TEMP"
Public EigenschaftUserDomainName Der Windows-Domain-Name
Public EigenschaftUserName Der Windows-Username
Protected EigenschaftUserSettingsAccessor Implementiert IGetStringValue für Zugriffe auf die app.config.user.
Public EigenschaftWorkingDirectory Das Arbeitsverzeichnis
Default:
Bei "SingleInstance=true: C:\Users\<user>\AppData\Local\Temp\<ApplicationName>
Bei "SingleInstance=false: C:\Users\<user>\AppData\Local\Temp\<ApplicationName>\<ProcessId>
Public EigenschaftWorkingDirectoryCreated True, wenn das WorkingDirectory beim Programmstart erzeugt wurde. Das Anlegen oder Löschen des WorkingDirectory erfolgt nicht durch BasicAppSettings sondern kann ggf. durch die Anwendung oder das Logging erfolgen. Default: false.
Zurück nach oben
Methoden
 NameBeschreibung
Protected MethodeDirectoryCreate Erstellt einen kompletten Verzeichnispfad, wenn dieser oder ein Teil davon nicht existiert. Retourniert den Teil des Verzeichnispfades, der bis inklusive zum ersten der neu angelegten Verzeichnisse geht oder null. Das Ergebnis dieser Routine kann dafür genutzt werden, genau den Teil eines Verzeichnispfades auch wieder zu löschen, der neu angelegt wurde.
Public MethodeDispose Öffentliche Methode zum Aufräumen.
Protected MethodeDispose(Boolean) Abschlussarbeiten, ggf. Timer zurücksetzen.
Protected MethodeFinalize Destruktor
(Überschreibt ObjectFinalize)
Public MethodeGetLoadedAssemblies Liefert ein Dictionary, das für alle in der Applikation geladenen Assemblies den FullName und die Assembly enthält. Kann in bestimmten Fällen für die Fehlersuche hilfreich sein.
Hinweis: ist der Schalter "DumpLoadedAssemblies" = true, werden in "Dispose" die Keys dieses Dictionarys (FullName) geloggt.
Public MethodeGetParametersSources Liefert ein Dictionary, das zu jedem Parameter den Namen der Quelle enthält. Kann in bestimmten Fällen für die Fehlersuche hilfreich sein.
Hinweis: ist der Schalter "DumpAppSettings" = true, wird in "Dispose" dieses Dictionary geloggt.
Public MethodeGetStringValue Liefert genau einen Wert zu einem Key. Wenn es keinen Wert zu dem Key gibt, wird defaultValue zurückgegeben.
Public MethodeGetStringValues Liefert ein string-Array zu einem Key. Wenn es keinen Wert zu dem Key gibt, wird defaultValue zurückgegeben.
Public MethodeGetValueT Liefert genau einen Wert zu einem Key. Wenn es keinen Wert zu dem Key gibt, wird defaultValue zurückgegeben. Wildcards der Form %Name% werden, wenn möglich, rekursiv ersetzt; Es wird versucht, den ermittelten String-Wert in den Rückgabetyp T zu casten.
Public MethodeGetValuesT NICHT IMPLEMENTIERT! Liefert ein Array von Werten zu einem Key. Wenn es keinen Wert zu dem Key gibt, wird defaultValue zurückgegeben. Wildcards der Form %Name% werden, wenn möglich, rekursiv ersetzt; Es wird versucht, den ermittelten String-Wert in den Rückgabetyp T zu casten.
Public MethodeLoadSettings Lädt die Systemeinstellungen bei der Initialisierung oder lädt sie auf Anforderung erneut.
Public MethodeReplaceWildcards Ersetzt Wildcards im Format %Name% durch ihre Laufzeit-Werte.
Protected MethodeSetDefaultSQLDirectories Setzt die Default-Verzeichnisse für den Microsoft SQL Server.
Public MethodeSetRegistryBasePath Setzt den Registry-Zugriffskey für alle nachfolgende Zugriffe auf den übergebenen Basis-Pfad, wenn sich der übergebene registryBasePath fehlerfrei in ein entsprechendes Equivalent aus Registy-Keys umwandeln lässt.
Zurück nach oben
Anmerkungen
File: BasicAppSettings.cs
Autor: Erik Nagel, NetEti

05.07.2011 Erik Nagel: erstellt.
08.03.2012 Erik Nagel: Singleton-Funktionalität entfernt, läuft jetzt über externen NetEti.Globals.GenericSingletonProvider. Dadurch wird AppSettings vererbbar; komplett überarbeitet, in BasicAppSettings umgetauft und alle anwendungsspezifischen Properties rausgeschmissen (liegen jetzt in den anwendungsspezifischen AppSettings).
23.01.2014 Erik Nagel: ProcessId eingebaut; Accessoren als einfache Properties in den Protected-Bereich verschoben.
10.06.2014 Erik Nagel: IGetValue implementiert.
31.12.2014 Erik Nagel: DebugMode implementiert.
04.10.2015 Erik Nagel: AppConfigUser implementiert.
14.07.2016 Erik Nagel: AppEnvAccessor von protected auf public geändert.
15.10.2017 Erik Nagel: RegistryBasePath eingeführt.
09.03.2019 Erik Nagel: DumpAppSettings und DumpLoadedAssemblies eingeführt.
05.04.2020 Erik Nagel: .NetCore-fähig gemacht; Newtosoft.json integriert; Version 4.6.1.
19.12.2024 Erik Nagel: Language implementiert; Version auf 8.0.1.0.
Siehe auch