Ich arbeite an einer C # -Klassenbibliothek, die Einstellungen aus der Datei web.config
oder lesen app.config
kann (abhängig davon, ob auf die DLL von einer ASP.NET-Webanwendung oder einer Windows Forms-Anwendung verwiesen wird).
Ich habe das gefunden
ConfigurationSettings.AppSettings.Get("MySetting")
funktioniert, aber dieser Code wurde von Microsoft als veraltet markiert.
Ich habe gelesen, dass ich verwenden sollte:
ConfigurationManager.AppSettings["MySetting"]
Die System.Configuration.ConfigurationManager
Klasse scheint jedoch nicht in einem C # -Klassenbibliotheksprojekt verfügbar zu sein.
Was ist der beste Weg, dies zu tun?
c#
.net
configuration
appsettings
Russ Clark
quelle
quelle
Antworten:
Sie benötigen , um einen Verweis hinzufügen , um
System.Configuration
in Ihrem Projekt Referenzen Ordner .Sie sollten auf jeden Fall das
ConfigurationManager
über das Veraltete verwendenConfigurationSettings
.quelle
Für eine Beispieldatei app.config wie folgt:
Sie lesen die obigen Anwendungseinstellungen mit dem folgenden Code:
Möglicherweise müssen Sie
System.Configuration
in Ihrem Projekt auch einen Verweis hinzufügen, falls noch keiner vorhanden ist. Sie können dann wie folgt auf die Werte zugreifen:quelle
Update für .NET Framework 4.5 und 4.6; Folgendes funktioniert nicht mehr:
Greifen Sie nun über Eigenschaften auf die Einstellungsklasse zu:
Weitere Informationen finden Sie unter Verwalten der Anwendungseinstellungen .
quelle
Klicken Sie mit der rechten Maustaste auf Ihre Klassenbibliothek und wählen Sie im Menü die Option "Referenzen hinzufügen".
Wählen Sie auf der Registerkarte .NET die Option System.Configuration aus. Dies würde die System.Configuration-DLL-Datei in Ihr Projekt aufnehmen.
quelle
ConfigurationManager.ConnectionStrings[0].ConnectionString
Ich benutze das und es funktioniert gut für mich:
quelle
Aus Konfiguration lesen:
Sie müssen einen Verweis auf die Konfiguration hinzufügen:
Holen Sie sich Wert mit folgendem Code:
In der Konfiguration speichern:
quelle
Sie müssen dem Projekt einen Verweis auf die Assembly System.Configuration hinzufügen.
quelle
Möglicherweise fügen Sie die Datei App.config einer DLL-Datei hinzu. App.Config funktioniert nur für ausführbare Projekte, da alle DLL-Dateien die Konfiguration aus der Konfigurationsdatei für die ausgeführte EXE-Datei übernehmen.
Angenommen, Sie haben zwei Projekte in Ihrer Lösung:
Ihr Problem hängt möglicherweise damit zusammen, dass Sie die Datei app.config in SomeDLL und nicht in SomeExe einfügen. SomeDll kann die Konfiguration aus dem SomeExe-Projekt lesen.
quelle
Versuche dies:
In der Datei web.config sollte dies die nächste Struktur sein:
quelle
Ich hatte das gleiche Problem. Lesen Sie sie einfach so: System.Configuration.ConfigurationSettings.AppSettings ["MySetting"]
quelle
This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings
web.config
wird mit Webanwendungen verwendet.web.config
Standardmäßig sind mehrere Konfigurationen für die Webanwendung erforderlich. Sie könnenweb.config
für jeden Ordner unter Ihrer Webanwendung eine haben.app.config
wird für Windows-Anwendungen verwendet. Wenn Sie die Anwendung in Visual Studio erstellen, wird sie automatisch in umbenannt<appname>.exe.config
und diese Datei muss zusammen mit Ihrer Anwendung geliefert werden.Sie können dieselbe Methode verwenden, um die
app settings
Werte aus beiden Konfigurationsdateien aufzurufen : System.Configuration.ConfigurationSettings.AppSettings ["Key"]quelle
System.Configuration.COnfigurationSettings.AppSettings.Get("Key")
anstelle der eckigen Klammern zu verwenden.Da ich den besten Ansatz gefunden habe, systematisch auf Anwendungseinstellungsvariablen zuzugreifen, indem ich eine Wrapper-Klasse über System.Configuration wie unten erstellt habe
Jetzt können wir über fest codierte Namen mit einer anderen Klasse wie folgt auf die erforderlichen Einstellungsvariablen zugreifen:
quelle
Ich empfehle Ihnen dringend, einen Wrapper für diesen Aufruf zu erstellen . So etwas wie eine
ConfigurationReaderService
und Abhängigkeitsinjektion verwenden , um diese Klasse zu erhalten. Auf diese Weise können Sie diese Konfigurationsdateien zu Testzwecken isolieren.Verwenden Sie also den
ConfigurationManager.AppSettings["something"];
vorgeschlagenen Wert und geben Sie diesen Wert zurück. Mit dieser Methode können Sie eine Art Standardrückgabe erstellen, wenn in der .config-Datei kein Schlüssel verfügbar ist.quelle
app.DEBUG.config
,app.RELEASE.config
, undapp.TEST.config
etc.Sie können auch Formo verwenden :
Aufbau:
Code:
quelle
Der Vollständigkeit halber gibt es eine weitere Option, die nur für Webprojekte verfügbar ist: System.Web.Configuration.WebConfigurationManager.AppSettings ["MySetting"]
Dies hat den Vorteil, dass keine zusätzliche Referenz hinzugefügt werden muss, sodass dies für einige Personen möglicherweise vorzuziehen ist.
quelle
Schritt 1: Klicken Sie mit der rechten Maustaste auf die Registerkarte Referenzen, um eine Referenz hinzuzufügen.
Schritt 2: Klicken Sie auf die Registerkarte Baugruppen
Schritt 3: Suchen Sie nach 'System.Configuration'
Schritt 4: Klicken Sie auf OK.
Dann wird es funktionieren.
quelle
Ich erstelle immer eine IConfig-Schnittstelle mit typsicheren Eigenschaften, die für alle Konfigurationswerte deklariert sind. Eine Config-Implementierungsklasse umschließt dann die Aufrufe von System.Configuration. Alle Ihre System.Configuration-Aufrufe befinden sich jetzt an einem Ort, und es ist viel einfacher und sauberer, zu pflegen, zu verfolgen, welche Felder verwendet werden, und ihre Standardwerte zu deklarieren. Ich schreibe eine Reihe von privaten Hilfsmethoden, um gängige Datentypen zu lesen und zu analysieren.
Mit einem IoC- Framework können Sie überall in der Anwendung auf die IConfig-Felder zugreifen, indem Sie die Schnittstelle einfach an einen Klassenkonstruktor übergeben. Sie können dann auch Scheinimplementierungen der IConfig-Schnittstelle in Ihren Komponententests erstellen, sodass Sie jetzt verschiedene Konfigurationswerte und Wertekombinationen testen können, ohne Ihre App.config- oder Web.config-Datei berühren zu müssen.
quelle
Eine andere mögliche Lösung:
quelle
Ich habe seit ein paar Tagen versucht, eine Lösung für dasselbe Problem zu finden. Ich konnte dies beheben, indem ich einen Schlüssel innerhalb des Appsettings-Tags in der Datei web.config hinzufügte . Dies sollte die DLL-Datei überschreiben, wenn Sie den Helfer verwenden.
quelle
Sie können die folgende Zeile verwenden. In meinem Fall hat es funktioniert: System.Configuration.ConfigurationSettings.AppSettings ["yourKeyName"]
Sie müssen darauf achten, dass die obige Codezeile auch die alte Version ist und in neuen Bibliotheken veraltet ist.
quelle
Der ConfigurationManager ist nicht das, was Sie benötigen, um auf Ihre eigenen Einstellungen zuzugreifen.
Um dies zu tun, sollten Sie verwenden
{YourAppName}.Properties.Settings.{settingName}
quelle
Ich konnte den folgenden Ansatz für .NET Core-Projekte zum Laufen bringen:
Schritte:
Ich habe eine Login () -Methode erstellt, um die Verwendung der Konfigurationsklasse anzuzeigen.
Erstellen Sie appsettings.json in Ihrem Projekt mit Inhalten:
quelle
Wenn Sie die
ConfigurationManager
Klasse brauchen / wollen ...Möglicherweise müssen Sie
System.Configuration.ConfigurationManager
von Microsoft über NuGet Package Manager ladenMicrosoft Docs
Eine Sache, die es wert ist, aus den Dokumenten erwähnt zu werden ...
quelle
Bitte überprüfen Sie die .NET-Version, an der Sie arbeiten. Sie sollte höher als 4 sein. Außerdem müssen Sie Ihrer Anwendung die System.Configuration-Systembibliothek hinzufügen.
quelle
Hier ist ein Beispiel:
App.config
quelle