Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subitoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Questo articolo si applica a: ✔️ .NET Core 3.1 SDK e versioni successive
In questo articolo verranno fornite informazioni sulle variabili di ambiente usate da .NET. Alcune variabili di ambiente vengono usate dal runtime .NET, mentre altre vengono usate solo da .NET SDK e dall'interfaccia della riga di comando di .NET. Alcune variabili di ambiente vengono usate da tutti e tre i componenti.
Esistono diverse impostazioni delle variabili di ambiente HTTP globali:
DOTNET_SYSTEM_NET_HTTP_ENABLEACTIVITYPROPAGATION
DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT
false
o 0
, disabilita il supporto HTTP/2, che è abilitato per impostazione predefinita.DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP3SUPPORT
true
o 1
, abilita il supporto HTTP/3, che è disabilitato per impostazione predefinita.DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2FLOWCONTROL_DISABLEDYNAMICWINDOWSIZING
false
o 0
, esegue l'override dell'impostazione predefinita e disabilita l'algoritmo di ridimensionamento delle finestre dinamiche HTTP/2.DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_MAXSTREAMWINDOWSIZE
DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_STREAMWINDOWSCALETHRESHOLDMULTIPLIER
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT
: vedere impostare la modalità invariante.DOTNET_SYSTEM_GLOBALIZATION_PREDEFINED_CULTURES_ONLY
: specifica se caricare solo le impostazioni cultura predefinite.DOTNET_SYSTEM_GLOBALIZATION_APPLOCALICU
: indica se usare i componenti internazionali locali dell'app di Unicode (ICU). Per ulteriori informazioni, vedere ICU locale dell'app.Le applicazioni possono abilitare la modalità invariante in uno dei modi seguenti:
Nel file di progetto:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Nel file runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Globalization.Invariant": true
}
}
}
Impostando il valore della variabile di ambiente DOTNET_SYSTEM_GLOBALIZATION_INVARIANT
su true
o 1
.
Importante
Un valore impostato nel file di progetto o runtimeconfig.json ha una priorità più alta rispetto alla variabile di ambiente.
Per altre informazioni, vedere modalità invariante globalizzazione .NET.
Questo vale solo per Windows. Affinché la globalizzazione usi il supporto per la lingua nazionale (NLS), impostare DOTNET_SYSTEM_GLOBALIZATION_USENLS
su true
o 1
. Per non usarlo, impostare DOTNET_SYSTEM_GLOBALIZATION_USENLS
su false
o 0
.
Questa sezione è incentrata su due variabili di ambiente System.Net.Sockets
:
DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS
DOTNET_SYSTEM_NET_SOCKETS_THREAD_COUNT
Le continuazioni socket vengono inviate all'oggetto System.Threading.ThreadPool dal thread dell'evento. In questo modo si evitano continuazioni che bloccano la gestione degli eventi. Per consentire l'esecuzione delle continuazioni direttamente nel thread di eventi, impostare DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS
su 1
. Per impostazione predefinita, è disabilitata.
Nota
Questa impostazione può peggiorare le prestazioni se è presente un lavoro costoso che finirà per mantenere il thread di I/O per più tempo del necessario. Testare per assicurarsi che questa impostazione consenta le prestazioni.
Usando benchmark TechEmpower che generano molte letture e scritture socket di piccole dimensioni in un carico molto elevato, un singolo motore socket è in grado di mantenere occupato fino a trenta x64 e otto core CPU Arm64. La maggior parte degli scenari reali non genererà mai un carico così enorme (centinaia di migliaia di richieste al secondo) e avere un singolo produttore è quasi sempre sufficiente. Tuttavia, per assicurarsi che i carichi estremi possano essere gestiti, è possibile usare DOTNET_SYSTEM_NET_SOCKETS_THREAD_COUNT
per eseguire l'override del valore calcolato. Se non viene eseguito l'override, viene usato il valore seguente:
DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS
è 1
, viene usato il valore Environment.ProcessorCount.DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS
non è 1
, viene valutata RuntimeInformation.ProcessArchitecture : 8
, in caso contrario su 30
.1
o Environment.ProcessorCount sui core per motore.Consente di determinare se internet Protocol versione 6 (IPv6) è disabilitato. Se impostato su true
o 1
, IPv6 è disabilitato se non diversamente specificato in System.AppContext.
È possibile usare uno dei meccanismi seguenti per configurare un processo per l'uso del precedente HttpClientHandler
:
Dal codice usare la classe AppContext
:
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
L'opzione AppContext
può essere impostata anche da un file di configurazione. Per altre informazioni sulla configurazione delle opzioni, vedere AppContext per i consumer di librerie.
Lo stesso risultato può essere ottenuto tramite la variabile di ambiente DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER
. Per rifiutare esplicitamente, impostare il valore su false
o 0
.
Nota
A partire da .NET 5, questa impostazione per usare HttpClientHandler non è più disponibile.
Esistono due funzionalità correlate allo stress per le informazioni GC generate da JIT e JIT: JIT Stress e GC Hole Stress. Queste funzionalità offrono un modo durante lo sviluppo per individuare casi perimetrali e scenari più "reali" senza dover sviluppare applicazioni complesse. Sono disponibili le variabili di ambiente seguenti:
DOTNET_JitStress
DOTNET_JitStressModeNamesOnly
DOTNET_GCStress
L'abilitazione dello stress JIT può essere eseguita in diversi modi. Impostare DOTNET_JitStress
su un valore intero diverso da zero per generare diversi livelli di ottimizzazioni JIT in base a un hash del nome del metodo. Per applicare tutte le ottimizzazioni impostare, ad esempio, DOTNET_JitStress=2
. Un altro modo per abilitare lo stress JIT consiste nell'impostare DOTNET_JitStressModeNamesOnly=1
e quindi richiedere le modalità di stress, delimitate da spazi, nella variabile DOTNET_JitStressModeNames
.
Si consideri ad esempio:
DOTNET_JitStressModeNames=STRESS_USE_CMOV STRESS_64RSLT_MUL STRESS_LCL_FLDS
L'abilitazione dello GC Hole stress (stress foro GC) fa sì che i GC si verifichino sempre in posizioni specifiche e che aiutano a tenere traccia dei fori GC. GC Hole Stress può essere abilitato usando la variabile di ambiente DOTNET_GCStress
.
Per altre informazioni, vedere Analisi dello stress jit e del foro GC.
Il generatore di codice per Arm64 consente di rimuovere tutte le istruzioni MemoryBarriers
impostando DOTNET_JitNoMemoryBarriers
su 1
.
Le immagini .NET ufficiali (Windows e Linux) impostano le variabili di ambiente note:
DOTNET_RUNNING_IN_CONTAINER
DOTNET_RUNNING_IN_CONTAINERS
Questi valori vengono usati per determinare quando i carichi di lavoro ASP.NET Core vengono eseguiti nel contesto di un contenitore.
Quando Console.IsOutputRedirected è true
, è possibile generare codice colore ANSI impostando DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION
su 1
o true
.
DOTNET_SYSTEM_DIAGNOSTICS_DEFAULTACTIVITYIDFORMATISHIERARCHIAL
: quando 1
o true
, il formato predefinito ID attività è gerarchico.DOTNET_SYSTEM_RUNTIME_CACHING_TRACING
: quando è in esecuzione come debug, la traccia può essere abilitata quando si tratta di true
.Configura endpoint alternativi in cui gli strumenti di diagnostica possono comunicare con il runtime .NET. Per altre informazioni, vedere la documentazione relativa alla porta di diagnostica.
Configura il runtime in modo che venga sospeso durante l'avvio e attenda il comando IPC ResumeStartup di diagnostica dalla porta di diagnostica specificata quando è impostato su 1. Il valore predefinito è 0. Per altre informazioni, vedere la documentazione relativa alla porta di diagnostica.
Se impostato su 0
, disabilita il debug, la profilatura e altra diagnostica tramite la porta di diagnostica e non può essere sottoposto a override da altre impostazioni di diagnostica. Il valore predefinito è 1
.
A partire da .NET 8, se impostato su 0
, disabilita la porta di diagnostica e non può essere sottoposto a override da altre impostazioni di diagnostica. Il valore predefinito è 1
.
A partire da .NET 8, se impostato su 0
, disabilita il debug e non può essere sottoposto a override da altre impostazioni di diagnostica. Il valore predefinito è 1
.
A partire da .NET 8, se impostato su 0
, disabilita la profilatura e non può essere sottoposto a override da altre impostazioni di diagnostica. Il valore predefinito è 1
.
Per altre informazioni, vedere variabili di ambiente EventPipe.
DOTNET_EnableEventPipe
: se impostato su 1
, abilita la traccia tramite EventPipe.DOTNET_EventPipeOutputPath
: percorso di output in cui verrà scritta la traccia.DOTNET_EventPipeOutputStreaming
: se impostato su 1
, consente lo streaming al file di output mentre l'app è in esecuzione. Per impostazione predefinita, le informazioni di traccia vengono accumulate in un buffer circolare e il contenuto viene scritto all'arresto dell'app.Specifica il percorso dei runtime .NET, se non sono installati nel percorso predefinito. Il percorso predefinito in Windows è C:\Program Files\dotnet
. Il percorso predefinito in macOS è /usr/local/share/dotnet
. Il percorso predefinito per i runtime x64 in un sistema operativo arm64 si trova in una sottocartella x64(così C:\Program Files\dotnet\x64
in windows e /usr/local/share/dotnet/x64
in macOS. Il percorso predefinito in Linux varia a seconda del metodo di distribuzione e installazione. Il percorso predefinito in Ubuntu 22.04 è /usr/share/dotnet
(se installato da packages.microsoft.com
) o /usr/lib/dotnet
(se installato dal feed Jammy). Per ulteriori informazioni, vedi le seguenti risorse:
Questa variabile di ambiente viene usata solo quando si eseguono app tramite eseguibili generati (apphosts).
DOTNET_ROOT(x86)
viene usato invece quando si esegue un eseguibile a 32 bit in un sistema operativo a 64 bit.
DOTNET_ROOT_X64
viene invece usato quando si esegue un eseguibile a 64 bit in un sistema operativo ARM64.
Specifica il percorso assoluto di un host dotnet
(dotnet.exe
in Windows, dotnet
in Linux e macOS) usato per avviare il processo di dotnet
attualmente in esecuzione. Questa operazione viene usata da .NET SDK per aiutare gli strumenti eseguiti durante i comandi di .NET SDK a garantire che usino lo stesso runtime dotnet
per tutti i processi figlio dotnet
creati per la durata del comando. Gli strumenti e le attività di MSBuild all'interno dell'SDK che richiamano file binari tramite l'host dotnet
devono rispettare questa variabile di ambiente per garantire un'esperienza coerente.
Gli strumenti che richiamano dotnet
durante un comando SDK devono usare l'algoritmo seguente per individuarlo:
DOTNET_HOST_PATH
è impostato, usare direttamente tale valoredotnet
tramite il sistema PATH
Nota
DOTNET_HOST_PATH
non è una soluzione generale per l'individuazione dell'host dotnet
. È destinato solo a essere usato dagli strumenti richiamati da .NET SDK.
Il comando dotnet run imposta questa variabile sul profilo di avvio selezionato.
Dato il file launchSettings.json seguente:
{
"profiles": {
"First": {
"commandName": "Project",
},
"Second": {
"commandName": "Project",
}
}
}
E il file Program.cs seguente:
var value = Environment.GetEnvironmentVariable("DOTNET_LAUNCH_PROFILE");
Console.WriteLine($"DOTNET_LAUNCH_PROFILE={value}");
Gli scenari seguenti producono l'output illustrato:
Profilo di avvio specificato ed esistente
$ dotnet run --launch-profile First
DOTNET_LAUNCH_PROFILE=First
Profilo di avvio non specificato, primo selezionato
$ dotnet run
DOTNET_LAUNCH_PROFILE=First
Profilo di avvio specificato ma non esistente
$ dotnet run --launch-profile Third
The launch profile "Third" could not be applied.
A launch profile with the name 'Third' doesn't exist.
DOTNET_LAUNCH_PROFILE=
Avviare senza profilo
$ dotnet run --no-launch-profile
DOTNET_LAUNCH_PROFILE=
La cartella dei pacchetti globali. Se non è impostata, il percorso predefinito è ~/.nuget/packages
in Unix o %userprofile%\.nuget\packages
in Windows.
Specifica il percorso dell'indice di manutenzione che l'host condiviso deve usare durante il caricamento del runtime.
Specifica se i messaggi di benvenuto e telemetria di .NET vengono visualizzati alla prima esecuzione. Impostare su true
per disattivare questi messaggi (valori true
, 1
o yes
accettati) o impostare su false
per consentire tali messaggi (valori false
, 0
o no
accettati). Se non è impostato, il valore predefinito è false
e i messaggi verranno visualizzati alla prima esecuzione. Questo flag non influisce sui dati di telemetria (vedere DOTNET_CLI_TELEMETRY_OPTOUT
per rifiutare esplicitamente l'invio di dati di telemetria).
Specifica se vengono registrati i dettagli sulle prestazioni relativi alla sessione dell'interfaccia della riga di comando corrente. Abilitata quando è impostata su 1
, true
o yes
. Questa opzione è disabilitata per impostazione predefinita.
Specifica se generare un certificato ASP.NET Core. Il valore predefinito è true
, ma può essere sottoposto a override impostando questa variabile di ambiente su 0
, false
o no
.
Specifica se aggiungere strumenti globali alla variabile di ambiente PATH
. Il valore predefinito è true
. Per non aggiungere strumenti globali al percorso, impostare su 0
, false
o no
.
Specifica se i dati sull'utilizzo degli strumenti .NET vengono raccolti e inviati a Microsoft. Impostare su true
per rifiutare esplicitamente la funzionalità di telemetria (i valori accettati sono true
, 1
o yes
). In caso contrario, impostare su false
per acconsentire esplicitamente alle funzionalità di telemetria (valori false
, 0
o no
accettati). Se non è impostata, il valore predefinito è false
e quindi la funzionalità di telemetria è attiva.
Se DOTNET_SKIP_FIRST_TIME_EXPERIENCE
è impostato su true
, NuGetFallbackFolder
non verrà espanso su disco e verrà visualizzato un messaggio di benvenuto e un avviso di telemetria più breve.
Nota
Questa variabile di ambiente non è più supportata in .NET Core 3.0 e versioni successive.
Usare DOTNET_NOLOGO
come sostituzione.
Specifica se il runtime .NET, il framework condiviso o l'SDK vengono risolti dal percorso globale. Se non è impostato, il valore predefinito è 1 (true
logico). Impostare il valore su 0 (false
logico ) per non risolvere dal percorso globale e disporre di installazioni .NET isolate. Per altre informazioni sulla ricerca multilivello, vedere Multi-level SharedFX Lookup (Ricerca SharedFX multilivello).
Nota
Questa variabile di ambiente si applica solo alle applicazioni destinate a .NET 6 e versioni precedenti. A partire da .NET 7, .NET cerca solo i framework in un'unica posizione. Per altre informazioni, vedere Ricerca a più livelli disabilitata.
Determina il comportamento di roll forward. Per altre informazioni, vedere l'opzione --roll-forward
per il comando dotnet
.
Se impostato su 1
(abilitato), abilita l'inoltro in sequenza a una versione non definitiva da una versione di rilascio. Per impostazione predefinita (0
- disabilitato), quando viene richiesta una versione di rilascio del runtime .NET, il roll forward considererà solo le versioni di rilascio installate.
Per altre informazioni, vedere l'opzione --roll-forward
per il comando dotnet
.
Se impostato su 0
, disabilita il roll forward della versione secondaria. Questa impostazione viene sostituita in .NET Core 3.0 da DOTNET_ROLL_FORWARD
. È consigliabile usare invece le nuove impostazioni.
Forza l'uso della codifica UTF-8 nella console, anche per le versioni precedenti di Windows 10 che non supportano completamente UTF-8. Per altre informazioni, vedere SDK non modifica più la codifica della console al termine.
Imposta la lingua dell'interfaccia utente dell'interfaccia della riga di comando usando un valore delle impostazioni locali, ad esempio en-us
. I valori supportati sono gli stessi di Visual Studio. Per altre informazioni, vedere la sezione relativa alla modifica del linguaggio del programma di installazione nella documentazione relativa all'installazione di Visual Studio. Si applicano le regole di Gestione risorse .NET, quindi non è necessario scegliere una corrispondenza esatta. È anche possibile selezionare discendenti nell'albero CultureInfo
. Ad esempio, se si imposta su fr-CA
, l'interfaccia della riga di comando troverà e userà le traduzioni fr
. Se si imposta su una lingua non supportata, l'interfaccia della riga di comando torna all'inglese.
Per i file eseguibili generati dall'interfaccia utente grafica: disabilita il popup della finestra di dialogo, che in genere viene visualizzato per determinate classi di errori. Scrive solo in stderr
e viene chiuso in tali casi.
Equivalente all'opzione dell'interfaccia della riga di comando --additional-deps
.
Esegue l'override del RID rilevato.
Posizione del "negozio condiviso" a cui la risoluzione della assembly fa riferimento in alcuni casi.
Elenco di assembly da cui caricare ed eseguire hook di avvio.
Specifica una directory in cui viene estratta un'applicazione a file singolo prima dell'esecuzione.
Per altre informazioni, vedere file eseguibili a file singolo.
Specifica il percorso in cui devono essere scritti i file di supporto per i comandi dell'interfaccia della riga di comando .NET. Ad esempio:
DOTNET_CLI_CONTEXT_VERBOSE
: per abilitare un contesto dettagliato, impostare su true
.DOTNET_CLI_CONTEXT_ANSI_PASS_THRU
: per abilitare un pass-through ANSI, impostare su true
.Disabilita il download in background dei manifesti pubblicitari per i carichi di lavoro. Il valore predefinito è false
: non disabilitato. Se impostato su true
, il download è disabilitato. Per altre informazioni, vedere Manifesti pubblicitari.
Specifica il numero minimo di ore tra i download in background dei manifesti pubblicitari per i carichi di lavoro. Il valore predefinito è 24
, che non è più frequente di una volta al giorno. Per altre informazioni, vedere Manifesti pubblicitari.
Specifica se gli strumenti locali di .NET SDK cercano i file manifesto dello strumento nella cartella radice in Windows. Il valore predefinito è false
.
Controlla la traccia diagnostica dai componenti di hosting, ad esempio dotnet.exe
, hostfxr
e hostpolicy
.
COREHOST_TRACE=[0/1]
- il valore predefinito è 0
: traccia disabilitata. Se impostato su 1
, la traccia diagnostica è abilitata.
COREHOST_TRACEFILE=<file path>
- ha un effetto solo se la traccia è abilitata impostando COREHOST_TRACE=1
. Se impostata, le informazioni di traccia sono scritte nel file specificato; in caso contrario, le informazioni di traccia sono scritte in stderr
.
COREHOST_TRACE_VERBOSITY=[1/2/3/4]
- il valore predefinito è 4
. L'impostazione viene usata solo quando la traccia è abilitata tramite COREHOST_TRACE=1
.
4
- tutte le informazioni di traccia vengono scritte3
- vengono scritti solo messaggi informativi, di avviso e di errore2
- Vengono scritti solo messaggi di avviso e di errore1
- Vengono scritti solo i messaggi di erroreIl modo tipico per ottenere informazioni di traccia dettagliate sull'avvio dell'applicazione consiste nell'impostare COREHOST_TRACE=1
e COREHOST_TRACEFILE=host_trace.txt
, e poi eseguire l'applicazione. Verrà creato un nuovo file host_trace.txt
nella directory corrente con le informazioni dettagliate.
Se impostato su true
, la chiamata dotnet
non genera un avviso quando viene usato un SDK di anteprima.
Per eseguire MSBuild out-of-process, impostare la variabile di ambiente DOTNET_CLI_RUN_MSBUILD_OUTOFPROC
su 1
, true
o yes
. Per impostazione predefinita, MSBuild eseguirà in-process. Per forzare MSBuild a usare un processo di lunga durata del nodo di lavoro esterno per la compilazione di progetti, impostare DOTNET_CLI_USE_MSBUILDNOINPROCNODE
su 1
, true
o yes
. Verrà impostata la variabile di ambiente MSBUILDNOINPROCNODE
su 1
, denominata MSBuild Server V1, perché il processo di ingresso inoltra la maggior parte del lavoro.
Si tratta di sostituzioni usate per forzare le attività e le destinazioni dell'SDK risolte a provenire da una determinata directory di base e segnalare una determinata versione a MSBuild, che può essere null
se sconosciuta. Un caso d'uso chiave per questo è testare le attività e le destinazioni dell'SDK senza distribuirle usando .NET Core SDK.
DOTNET_MSBUILD_SDK_RESOLVER_SDKS_DIR
: esegue l'override della directory .NET SDK.DOTNET_MSBUILD_SDK_RESOLVER_SDKS_VER
: esegue l'override della versione di .NET SDK.DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR
: esegue l'override del percorso della directory dotnet.exe.Configura il linguaggio di programmazione predefinito per il comando dotnet new
quando l'opzione -lang|--language
viene omessa. Il valore predefinito è C#
. I valori validi sono C#
, F#
o VB
. Per altre informazioni, vedere dotnet new.
Per informazioni sulle impostazioni di dotnet watch
disponibili come variabili di ambiente, vedere variabili di ambiente dotnet watch.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subito