Este proyecto demuestra el comportamiento de configuración encadenado de Microsoft para aplicaciones de host genéricos .NET.
Utiliza Net 6.0 y el generador de host General en una aplicación de consola, con una propiedad de "saludo" que se anula con cada cadena en la configuración.
Este es el orden en el que se aplica cada proveedor de configuración encadenado. El último gana.
A veces, entiende la configuración encadenada y lo que anula lo que puede ser una curva de aprendizaje más grande de la que se desea.
Esta demostración es ayudar con su comprensión del orden de la configuración encadenada.
La parte de configuración de Azure de esta demostración utiliza el acceso a la configuración de la aplicación Azure, que actualmente es gratuita para un recurso.
Si usa esta parte de la demostración, debe configurar su suscripción y entorno de Azure antes de iniciar la demostración.
Utilicé la propiedad configurable de "saludo", una con una etiqueta, una sin. Si desea usarlos, o solo uno u otro, deberá agregarlos a su configuración de la aplicación Azure.
El etiquetado debe coincidir con la "configuración encadenada" según el código existente.

También debe desenchufar la sección de AddAzureAppConfiguration en Program.cs .
Se requiere familiaridad con una línea de comandos. Los ejemplos se basan en Git Bash para Windows, pero se pueden mapear fácilmente para PowerShell o CMD.
Estos asumen una terminal de Bash. Convierta a comandos para su ventana de terminal/PowerShell/CMD favorita.
Estos trabajan al revés desde la configuración de la aplicación Azure, que anula todas las configuraciones anteriores, a la prioridad más baja de la cadena.
Cuando se ejecute desde la línea de comandos, limpie (sin conjunto de variables de entorno):
Con la sección AzureAppConfiguration de Program.cs sin comments,
~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe Greeting=HelloFromArgs
Starting demo...
In the end, the greeting is "HelloFromAzure"
Press Ctrl-C to stop the host and exit.
Con la sección AzureAppConfiguration de Program.cs comentada, Inside Visual Studio, ejecute la aplicación en depuración.

Con Azure comentado, y sin conjunto de dotnet_environment, que no se lanzará desde la lanzamiento de Visual Studio,

~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe Greeting=HelloFromArgs
Starting demo...
In the end, the greeting is "HelloFromArgs"
Press Ctrl-C to stop the host and exit.
Esta aplicación está configurada de tal manera que si el dotnet_environment no está configurado, o se establece en algo más que "desarrollo" o "prueba", el edificio de configuración cae a appSettings.json (si la propiedad existe en appSettings.json), y así sucesivamente, como, por ejemplo, si dotnet_environment se establece en "producción".
Program.cs comentado ~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ export DOTNET_ENVIRONMENT=Development
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromAppSettings.Development"
Press Ctrl-C to stop the host and exit.
Program.cs comentado ~/source/repos/ChainedConfigurationDemo/pub master
└─ cd ..; dotnet publish -o pub --nologo --verbosity quiet; cd pub
~/source/repos/ChainedConfigurationDemo/pub master
└─ export DOTNET_ENVIRONMENT=Test
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromAppSettings.Test"
Press Ctrl-C to stop the host and exit.
~/source/repos/ChainedConfigurationDemo/pub master
└─ unset DOTNET_ENVIRONMENT
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromAppSettings"
Press Ctrl-C to stop the host and exit.
Con la configuración actual de la aplicación, este es el mismo resultado que en la producción.
~/source/repos/ChainedConfigurationDemo/pub master
└─ export Greeting=HelloFromOperatingEnvironment
~/source/repos/ChainedConfigurationDemo/pub master
└─ ./ChainedConfigurationDemo.exe
Starting demo...
In the end, the greeting is "HelloFromOperatingEnvironment"
Press Ctrl-C to stop the host and exit.
(Asegúrese de unset Greeting si está en el entorno CLI para todos los demás casos)
Para el caso de uso opcional de Azure, necesitará
Para el n. ° 4, esta demostración utiliza la cadena de conexión de solo lectura desde mi configuración de la aplicación Azure, que se detiene como una variable de entorno de mi sistema local.