J'ai une méthode qui lit les paramètres de mon fichier de configuration comme ceci:
var value = ConfigurationManager.AppSettings[key];
Il se compile correctement lorsque vous ciblez .NET Standard 2.0 uniquement.
Maintenant, j'ai besoin de plusieurs cibles, j'ai donc mis à jour mon fichier de projet avec:
<TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks>
Mais maintenant, la compilation échoue netcoreapp2.0
avec le message d'erreur suivant:
Error CS0103 The name 'ConfigurationManager' does not exist in the current context (netcoreapp2.0)
Séparément, j'ai créé une nouvelle application de console .NET Core 2.0 (ciblant uniquement .NET Core 2.0 cette fois), mais de même, il ne semble pas y avoir ConfigurationManager
sous l'espace de noms System.Configuration
.
Je suis assez confus car il est disponible sous .NET Standard 2.0, donc je m'attendrais à ce qu'il soit disponible dans .NET Core 2.0, car .NET Core 2.0 est compatible .NET Standard 2.0.
Qu'est-ce que je rate?
la source
It compiles fine when targeting .NET Standard 2.0 only
- cela ne peut pas être correct, carConfigurationManager
ne fait pas partie de .NET Standard (jusqu'à présent, cela est vrai jusqu'à v.2.1).Réponses:
Oui,
ConfigurationManager.AppSettings
est disponible dans .NET Core 2.0 après avoir référencé le package NuGetSystem.Configuration.ConfigurationManager
.Les crédits vont à @JeroenMostert pour m'avoir donné la solution.
la source
<add key="YourSetting" value="YourValue" />
.NET Framework 4.6
comme une dépendance. Cela signifie-t-il que mon projet `.NET Core` n'est plus unCore
projet pur ?J'ai installé à
System.Configuration.ConfigurationManager
partir de Nuget dans mon application .net core 2.2.Je référence alors
using System.Configuration;
Ensuite, j'ai changé
Jusqu'à présent, je pense que c'est correct.
4.5.0 is typical with .net core 2.2
Je n'ai eu aucun problème avec cela.
la source
Une fois que vous avez configuré les packages, vous devrez créer un app.config ou web.config et ajouter quelque chose comme ce qui suit:
la source
Le dernier ensemble de conseils est le suivant: (à partir de https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#environment-variables )
Utilisation:
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
À partir de la documentation:
la source
using static System.Environment;
Vous pouvez utiliser la configuration pour résoudre ce problème.
Ex (Startup.cs):
Vous pouvez passer par DI aux contrôleurs après cette implémentation.
la source