Formazione
Modulo
Questo modulo illustra come implementare un flag di funzionalità in un'app di microservizi ASP.NET Core con Configurazione app di Azure.
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
.NET 5+ (incluse le versioni di .NET Core) supporta l'uso di file di configurazione e variabili di ambiente per configurare il comportamento delle applicazioni .NET.
Nota
Gli articoli di questa sezione riguardano la configurazione del runtime .NET stesso. Se si esegue la migrazione a .NET Core 3.1 o versione successiva e si sta cercando una sostituzione del file app.config oppure se si vuole semplicemente usare i valori di configurazione personalizzati nell'app .NET, vedere la classe Microsoft.Extensions.Configuration.ConfigurationBuilder e Configurazione in .NET.
L'uso di queste impostazioni è un'opzione interessante se:
.NET offre i meccanismi seguenti per la configurazione del comportamento del runtime .NET:
Suggerimento
La configurazione di un'opzione tramite una variabile di ambiente applica l'impostazione a tutte le app .NET. La configurazione di un'opzione nel file runtimeconfig.json o nel file di progetto applica l'impostazione solo a tale applicazione.
Alcuni valori di configurazione possono essere impostati anche a livello di codice chiamando il metodo AppContext.SetSwitch.
Gli articoli in questa sezione della documentazione sono organizzati per categoria, ad esempio debug e Garbage Collection. Se applicabile, vengono visualizzate le opzioni di configurazione per i file runtimeconfig.json, le proprietà di MSBuild, le variabili di ambiente e, per riferimento incrociato, i file app.config per i progetti .NET Framework.
Quando un progetto viene compilato, viene generato un file [nomeapp].runtimeconfig.json nella directory di output. Se esiste un file runtimeconfig.template.json nella stessa cartella del file di progetto, tutte le opzioni di configurazione contenute vengono inserite nel file [nomeapp].runtimeconfig.json. Se si compila l'app manualmente, inserire eventuali opzioni di configurazione nel file runtimeconfig.template.json. Se si esegue semplicemente l'app, inserirle direttamente nel file [nomeapp].runtimeconfig.json.
Nota
OutputType
dell'app non è Exe
e si vuole che le opzioni di configurazione vengano copiate da runtimeconfig.template.json a [nomeapp].runtimeconfig.json, è necessario impostare in modo esplicito GenerateRuntimeConfigurationFiles
su true
nel file di progetto. Per le app che richiedono un file runtimeconfig.json, per impostazione predefinita questa proprietà è true
.Specificare le opzioni di configurazione del runtime nella sezione configProperties del file runtimeconfig.json o runtimeconfig.template.json. Questa sezione presenta il formato seguente:
"configProperties": {
"config-property-name1": "config-value1",
"config-property-name2": "config-value2"
}
Se si inseriscono le opzioni nel file JSON di output, annidarle nella proprietà runtimeOptions
.
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.0"
},
"configProperties": {
"System.Globalization.UseNls": true,
"System.Net.DisableIPv6": true,
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": 4,
"System.Threading.ThreadPool.MaxThreads": 25
}
}
}
Se si inseriscono le opzioni nel file JSON del modello, omettere la proprietà runtimeOptions
.
{
"configProperties": {
"System.Globalization.UseNls": true,
"System.Net.DisableIPv6": true,
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": "4",
"System.Threading.ThreadPool.MaxThreads": "25"
}
}
È possibile impostare alcune opzioni di configurazione del runtime usando le proprietà di MSBuild nel file con estensione csproj o vbproj di progetti .NET di tipo SDK. Le proprietà di MSBuild hanno la precedenza sulle opzioni impostate nel file runtimeconfig.template.json.
Per le impostazioni di configurazione del runtime che non hannouna proprietà di MSBuild specifica, è possibile usare invece l'elemento RuntimeHostConfigurationOption
di MSBuild. Usare il nome dell'impostazione runtimeconfig.json come valore dell'attributo Include
.
Di seguito è riportato un file di progetto di tipo SDK di esempio con proprietà di MSBuild per la configurazione del comportamento del runtime .NET:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
<ThreadPoolMaxThreads>25</ThreadPoolMaxThreads>
</PropertyGroup>
<ItemGroup>
<RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
<RuntimeHostConfigurationOption Include="System.Net.DisableIPv6" Value="true" />
</ItemGroup>
</Project>
Le proprietà di MSBuild per la configurazione del comportamento del runtime sono indicate nei singoli articoli per ogni area, ad esempio Garbage Collection. Sono elencate anche nella sezione Configurazione del runtime delle informazioni di riferimento sulle proprietà di MSBuild per i progetti in stile SDK.
Le variabili di ambiente possono essere usate per fornire alcune informazioni di configurazione del runtime. Le manopole di configurazione specificate come variabili di ambiente hanno in genere il prefisso DOTNET_.
Nota
.NET 6 standardizza il prefisso DOTNET_
anziché COMPlus_
per le variabili di ambiente che configurano il comportamento di runtime di .NET. Tuttavia, il prefisso COMPlus_
continuerà a funzionare. Se si usa una versione precedente del runtime .NET, è comunque consigliabile usare il prefisso COMPlus_
per le variabili di ambiente.
È possibile definire le variabili di ambiente dal Pannello di controllo di Windows, dalla riga di comando o a livello di codice chiamando il metodo Environment.SetEnvironmentVariable(String, String) nei sistemi basati su Windows e Unix.
Gli esempi seguenti illustrano come impostare una variabile di ambiente dalla riga di comando:
# Windows
set DOTNET_GCRetainVM=1
# Powershell
$env:DOTNET_GCRetainVM="1"
# Unix
export DOTNET_GCRetainVM=1
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
Formazione
Modulo
Questo modulo illustra come implementare un flag di funzionalità in un'app di microservizi ASP.NET Core con Configurazione app di Azure.