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.0
con 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 ConfigurationManager
en 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, porqueConfigurationManager
no es parte de .NET Standard (hasta ahora esto es cierto hasta v.2.1).Respuestas:
Sí,
ConfigurationManager.AppSettings
está 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.6
como una dependencia. ¿Eso significa que mi proyecto `.NET Core` ya no es unCore
proyecto puro ?lo instalé
System.Configuration.ConfigurationManager
desde 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.2
No 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