Este projeto demonstra o comportamento de configuração encadeado da Microsoft para aplicativos de host genéricos .NET.
Usa o Net 6.0 e o construtor de host genéricos em um aplicativo de console, com uma propriedade de "saudação" que é substituída por cada cadeia na configuração.
Esta é a ordem em que cada provedor de configuração encadeado é aplicado. O último vence.
Às vezes, entender a configuração encadeada e o que substitui o que pode ser uma curva de aprendizado maior do que o desejado.
Esta demonstração é ajudar com sua compreensão da ordem da configuração encadeada.
A parte da configuração do Azure desta demonstração usa o Acep App Configuration Access, que atualmente é gratuito para um recurso.
Se estiver usando essa parte da demonstração, você deve configurar sua assinatura e ambiente do Azure antes de iniciar a demonstração.
Eu usei a propriedade configurável "saudação", uma com uma etiqueta, uma sem. Se você quiser usá -los, ou apenas um ou outro, precisará adicioná -los à sua configuração do Azure App.
O rotulado deve corresponder "Configuração encadeada" de acordo com o código existente.

Você também deve descomentar a seção AddAzureAppConfiguration no Program.cs .
É necessária familiaridade com uma linha de comando. Os exemplos são baseados no Git Bash para Windows, mas podem ser facilmente mapeados para PowerShell ou CMD.
Eles assumem um terminal Bash. Converta em comandos para sua janela Favorita Terminal/PowerShell/CMD.
Eles trabalham ao contrário da configuração do Azure App, que substitui todas as configurações anteriores, para a menor prioridade da cadeia.
Ao fugir da linha de comando, limpe (sem variáveis de ambiente definido):
Com a seção AzureAppConfiguration of Program.cs não tomada,
~/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.
Com a seção AzureAppConfiguration do Program.cs comentou, dentro do Visual Studio, execute o aplicativo em Debug.

Com o Azure comentou, e nenhum conjunto de dotnet_environment, não lançando a partir de shiptsettings de lançamento do 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.
Este aplicativo está configurado de modo que, se o Dotnet_environment não estiver definido ou estiver definido como algo diferente de "desenvolvimento" ou "teste", o edifício de configuração cai para apps.
Program.cs comentou ~/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 comentou ~/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.
Com a configuração atual do aplicativo, este é o mesmo resultado da produção.
~/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.
(Certifique -se de unset Greeting se no ambiente da CLI para todos os outros casos)
Para o caso de uso opcional do Azure, você precisará
Para o #4, essa demonstração usa a string de conexão somente leitura da minha configuração do Azure App, atraída como uma variável de ambiente do meu sistema local.