Tengo un método que lee la configuración de mi archivo de configuración de esta manera:
var value = ConfigurationManager.AppSettings[key];
Se compila bien solo cuando se dirige a .NET Standard 2.0.
Ahora necesito múltiples objetivos, así que actualicé mi archivo de proyecto con:
<TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks>
Pero ahora, la compilación falla netcoreapp2.0con el siguiente mensaje de error:
Error CS0103 The name 'ConfigurationManager' does not exist in the current context (netcoreapp2.0)
Por separado, creé una nueva aplicación de consola .NET Core 2.0 (solo dirigida a .NET Core 2.0 esta vez), pero del mismo modo parece que no hay ninguna ConfigurationManageren el espacio de nombres System.Configuration.
Estoy bastante confundido porque está disponible en .NET Standard 2.0, por lo que esperaría que esté disponible en .NET Core 2.0, ya que .NET Core 2.0 es compatible con .NET Standard 2.0.
¿Qué me estoy perdiendo?
c#
.net-core
app-config
.net-standard
Alex Sanséau
fuente
fuente

It compiles fine when targeting .NET Standard 2.0 only- esto no puede ser correcto, porqueConfigurationManagerno es parte de .NET Standard (hasta ahora esto es cierto hasta v.2.1).Respuestas:
Sí,
ConfigurationManager.AppSettingsestá disponible en .NET Core 2.0 después de hacer referencia al paquete NuGetSystem.Configuration.ConfigurationManager.Los créditos van a @JeroenMostert por darme la solución.
fuente
<add key="YourSetting" value="YourValue" />.NET Framework 4.6como una dependencia. ¿Eso significa que mi proyecto `.NET Core` ya no es unCoreproyecto puro ?lo instalé
System.Configuration.ConfigurationManagerdesde Nuget en mi aplicación .net core 2.2.Entonces hago referencia
using System.Configuration;Luego cambié
Hasta ahora creo que esto es correcto.
4.5.0 is typical with .net core 2.2No he tenido ningún problema con esto.
fuente
Una vez que haya configurado los paquetes, deberá crear una app.config o web.config y agregar algo como lo siguiente:
fuente
El último conjunto de orientación es el siguiente: (de https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#environment-variables )
Utilizar:
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);De los documentos:
fuente
using static System.Environment;Puede usar la Configuración para resolver esto.
Ej (Startup.cs):
Puede pasar por DI a los controladores después de esta implementación.
fuente