Mam metodę, która odczytuje ustawienia z mojego pliku konfiguracyjnego w następujący sposób:
var value = ConfigurationManager.AppSettings[key];
Kompiluje się dobrze tylko dla platformy .NET Standard 2.0.
Teraz potrzebuję wielu celów, więc zaktualizowałem plik projektu o:
<TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks>
Ale teraz kompilacja kończy się niepowodzeniem netcoreapp2.0
z następującym komunikatem o błędzie:
Error CS0103 The name 'ConfigurationManager' does not exist in the current context (netcoreapp2.0)
Osobno utworzyłem nową aplikację konsolową .NET Core 2.0 (tym razem przeznaczoną tylko dla .NET Core 2.0), ale podobnie wydaje się, że nie ma jej ConfigurationManager
w przestrzeni nazw System.Configuration
.
Jestem trochę zdezorientowany, ponieważ jest dostępny w .NET Standard 2.0, więc spodziewałbym się, że będzie dostępny w .NET Core 2.0, ponieważ .NET Core 2.0 jest zgodny z .NET Standard 2.0.
czego mi brakuje?
c#
.net-core
app-config
.net-standard
Alex Sanséau
źródło
źródło
It compiles fine when targeting .NET Standard 2.0 only
- to nie może być poprawne, ponieważConfigurationManager
nie jest częścią standardu .NET (na razie dotyczy to wersji 2.1).Odpowiedzi:
Tak,
ConfigurationManager.AppSettings
jest dostępny w .NET Core 2.0 po odwołaniu się do pakietu NuGetSystem.Configuration.ConfigurationManager
.Podziękowania dla @JeroenMostert za dostarczenie mi rozwiązania.
źródło
<add key="YourSetting" value="YourValue" />
.NET Framework 4.6
jako zależność. Czy to oznacza, że mój projekt „.NET Core” nie jest już czystymCore
projektem?Zainstalowałem
System.Configuration.ConfigurationManager
z Nuget w mojej aplikacji .net core 2.2.Następnie odwołuję się
using System.Configuration;
Następnie zmieniłem się
Jak dotąd uważam, że to prawda.
4.5.0 is typical with .net core 2.2
Nie miałem z tym żadnych problemów.
źródło
Po skonfigurowaniu pakietów musisz utworzyć plik app.config lub web.config i dodać coś podobnego do następującego:
źródło
Najnowszy zestaw wskazówek jest następujący: (z https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#environment-variables )
Posługiwać się:
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
Z dokumentów:
źródło
using static System.Environment;
Możesz użyć konfiguracji, aby rozwiązać ten problem.
Np. (Startup.cs):
Po tej implementacji możesz przekazać DI do kontrolerów.
źródło