Pracuję nad biblioteką klasy C #, która musi być w stanie odczytać ustawienia z pliku web.config
lub app.config
(w zależności od tego, czy do DLL odwołuje się aplikacja ASP.NET, czy aplikacja Windows Forms).
Znalazłem to
ConfigurationSettings.AppSettings.Get("MySetting")
działa, ale ten kod został oznaczony przez Microsoft jako przestarzały.
Przeczytałem, że powinienem używać:
ConfigurationManager.AppSettings["MySetting"]
Jednak System.Configuration.ConfigurationManager
klasa nie wydaje się być dostępna z projektu biblioteki klas C #.
Jak najlepiej to zrobić?
c#
.net
configuration
appsettings
Russ Clark
źródło
źródło
Odpowiedzi:
Musisz dodać odniesienie do folderu odniesień
System.Configuration
w projekcie .Zdecydowanie powinieneś korzystać
ConfigurationManager
z przestarzałychConfigurationSettings
.źródło
Przykładowy plik app.config jak poniżej:
Czytasz powyższe ustawienia aplikacji, używając kodu pokazanego poniżej:
Może być również konieczne dodanie odniesienia do
System.Configuration
projektu, jeśli jeszcze go nie ma. Następnie możesz uzyskać dostęp do takich wartości:źródło
Aktualizacja dla .NET Framework 4.5 i 4.6; następujące przestaną działać:
Teraz uzyskaj dostęp do klasy Setting poprzez Właściwości
Aby uzyskać więcej informacji, zobacz Zarządzanie ustawieniami aplikacji .
źródło
Kliknij prawym przyciskiem myszy bibliotekę klas i wybierz z menu opcję „Dodaj referencje”.
I z zakładki .NET wybierz System.Configuration. Obejmuje to plik DLL System.Configuration do twojego projektu.
źródło
ConfigurationManager.ConnectionStrings[0].ConnectionString
Używam tego i działa dobrze dla mnie:
źródło
Czytaj z konfiguracji:
Musisz dodać odniesienie do konfiguracji:
Uzyskaj wartość za pomocą następującego kodu:
Zapisz w konfiguracji:
źródło
Do projektu należy dodać odwołanie do zestawu System.Configuration.
źródło
Być może dodajesz plik App.config do pliku DLL. App.Config działa tylko dla projektów wykonywalnych, ponieważ wszystkie pliki DLL pobierają konfigurację z pliku konfiguracyjnego wykonywanego pliku EXE.
Załóżmy, że masz dwa projekty w swoim rozwiązaniu:
Twój problem może być związany z faktem, że dołączasz plik app.config do SomeDLL, a nie SomeExe. SomeDll jest w stanie odczytać konfigurację z projektu SomeExe.
źródło
Spróbuj tego:
W pliku web.config powinna to być następna struktura:
źródło
Miałem ten sam problem. Przeczytaj je w ten sposób: System.Configuration.ConfigurationSettings.AppSettings [„MySetting”]
źródło
This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings
web.config
jest używany z aplikacjami internetowymi.web.config
domyślnie ma kilka konfiguracji wymaganych dla aplikacji internetowej. Możesz miećweb.config
dla każdego folderu w swojej aplikacji internetowej.app.config
jest używany w aplikacjach Windows. Gdy kompilujesz aplikację w Visual Studio, zostanie ona automatycznie zmieniona na nazwę<appname>.exe.config
i ten plik musi zostać dostarczony wraz z aplikacją.Tej samej metody można użyć do wywołania
app settings
wartości z obu plików konfiguracyjnych: System.Configuration.ConfigurationSettings.AppSettings [„Key”]źródło
System.Configuration.COnfigurationSettings.AppSettings.Get("Key")
zamiast nawiasów kwadratowych.Ponieważ znalazłem najlepsze podejście do uzyskiwania dostępu do zmiennych ustawień aplikacji w sposób systematyczny, tworząc klasę opakowania nad System.Configuracja jak poniżej
Teraz możemy uzyskać dostęp do potrzebnych zmiennych ustawień za pomocą zakodowanych nazw przy użyciu innej klasy, jak poniżej:
źródło
Zdecydowanie zalecamy utworzenie opakowania dla tego połączenia. Coś w rodzaju
ConfigurationReaderService
i użyj zastrzyku zależności, aby uzyskać tę klasę. W ten sposób będziesz mógł odizolować te pliki konfiguracyjne do celów testowych.Więc użyj
ConfigurationManager.AppSettings["something"];
sugerowanej i zwróć tę wartość. Za pomocą tej metody możesz utworzyć domyślny zwrot, jeśli w pliku .config nie ma żadnego klucza.źródło
app.DEBUG.config
,app.RELEASE.config
iapp.TEST.config
itpMożesz także użyć Formo :
Konfiguracja:
Kod:
źródło
Dla kompletności istnieje inna opcja dostępna tylko dla projektów internetowych: System.Web.Configuration.WebConfigurationManager.AppSettings [„MySetting”]
Zaletą tego jest to, że nie wymaga dodania dodatkowego odniesienia, więc może być preferowane dla niektórych osób.
źródło
Krok 1: Kliknij prawym przyciskiem myszy zakładkę odniesienia, aby dodać odniesienie.
Krok 2: Kliknij kartę Zespoły
Krok 3: Wyszukaj „Konfiguracja systemu”
Krok 4: Kliknij OK.
Wtedy to zadziała.
źródło
Zawsze tworzę interfejs IConfig z właściwościami typeafe zadeklarowanymi dla wszystkich wartości konfiguracyjnych. Klasa implementacji Config następnie zawija wywołania do System.Configuration. Wszystkie twoje wywołania System.Configuracja są teraz w jednym miejscu, a utrzymanie i śledzenie, które pola są używane, i deklarowanie ich wartości domyślnych jest o wiele łatwiejsze i czystsze. Piszę zestaw prywatnych metod pomocniczych do odczytu i analizy typowych typów danych.
Za pomocą frameworka IoC można uzyskać dostęp do pól IConfig w dowolnym miejscu w aplikacji, po prostu przekazując interfejs do konstruktora klasy. Następnie możesz również tworzyć symulacje implementacji interfejsu IConfig w testach jednostkowych, dzięki czemu możesz teraz testować różne wartości konfiguracji i kombinacje wartości bez konieczności dotykania pliku App.config lub Web.config.
źródło
Inne możliwe rozwiązanie:
źródło
Od kilku dni próbuję znaleźć rozwiązanie tego samego problemu. Udało mi się to rozwiązać, dodając klucz w znaczniku appsettings w pliku web.config . Powinno to zastąpić plik .dll podczas korzystania z pomocnika.
źródło
Możesz użyć poniższej linii. W moim przypadku działało: System.Configuration.ConfigurationSettings.AppSettings ["yourKeyName"]
Musisz uważać, aby powyższy wiersz kodu był również starą wersją i był przestarzały w nowych bibliotekach.
źródło
Menedżer konfiguracji ConfigurationManager nie jest tym, czego potrzebujesz, aby uzyskać dostęp do własnych ustawień.
Aby to zrobić, powinieneś użyć
{YourAppName}.Properties.Settings.{settingName}
źródło
Udało mi się uzyskać poniższe podejście do pracy w projektach .NET Core:
Kroki:
Utworzyłem metodę Login (), aby pokazać użycie klasy konfiguracji.
Utwórz appsettings.json w swoim projekcie z zawartością:
źródło
Jeśli potrzebujesz / chcesz skorzystać z
ConfigurationManager
klasy ...Może być konieczne załadowanie
System.Configuration.ConfigurationManager
przez Microsoft za pomocą NuGet Package ManagerDokumenty Microsoft
Warto zwrócić uwagę na dokumenty ...
źródło
Sprawdź wersję .NET, nad którą pracujesz. Powinien być wyższy niż 4. I musisz dodać bibliotekę systemową System.Configuration do swojej aplikacji.
źródło
Oto przykład:
App.config
źródło