Il .NET SDK include una funzionalità di telemetria che raccoglie i dati di utilizzo e li invia a Microsoft quando vengono usati i comandi .NET CLI . I dati di utilizzo includono informazioni sulle eccezioni quando la CLI di .NET va in crash. L'interfaccia della riga di comando di .NET include .NET SDK ed è il set di verbi che consentono di compilare, testare e pubblicare le app .NET. I dati di telemetria consentono al team .NET di comprendere come vengono usati gli strumenti in modo che possano essere migliorati. Le informazioni sugli errori consentono al team di risolvere i problemi e correggere i bug.
dotnet ha due funzioni: per eseguire le app e per eseguire i comandi dell'interfaccia della riga di comando. La telemetria non viene raccolta quando si utilizza dotnet per avviare un'applicazione nel formato seguente:
dotnet [path-to-app].dll
La telemetria viene raccolta quando si utilizza uno dei comandi della CLI di .NET , ad esempio:
dotnet build
dotnet pack
dotnet run
Come rifiutare esplicitamente
La funzionalità di telemetria di .NET SDK è abilitata per impostazione predefinita per le distribuzioni Microsoft dell'SDK. Per rifiutare esplicitamente la funzionalità di telemetria, impostare la variabile di ambiente DOTNET_CLI_TELEMETRY_OPTOUT su 1 o true.
Quando si verifica un'installazione corretta, una singola voce di telemetria viene inviata anche dall'installer di .NET SDK. Per rifiutare esplicitamente, impostare la variabile di ambiente DOTNET_CLI_TELEMETRY_OPTOUT prima di installare .NET SDK.
Importante
Per annullare dopo l'avvio dell'installatore: chiudere l'installatore, impostare la variabile di ambiente, quindi eseguire nuovamente l'installatore con tale valore impostato.
Rivelazione
.NET SDK visualizza testo simile al seguente quando si esegue per la prima volta uno dei comandi della .NET CLI (ad esempio, dotnet build). Il testo può variare leggermente a seconda della versione dell'SDK in esecuzione. Questa esperienza di "prima esecuzione" è il modo in cui Microsoft invia una notifica sulla raccolta dei dati.
Telemetry
---------
The .NET tools collect usage data in order to help us improve your experience. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
Per disabilitare questo messaggio e il messaggio di benvenuto .NET, impostare la variabile di ambiente DOTNET_NOLOGO su true. Nota che questa variabile non influisce sulla disattivazione dei dati di telemetria.
Punti dati
La funzionalità di telemetria non raccoglie dati personali, ad esempio nomi utente o indirizzi di posta elettronica. Non analizza il codice e non estrae dati a livello di progetto, ad esempio nome, repository o autore. Non estrae il contenuto di alcun file di dati a cui le tue app accedono o che creano, né esegue il dump di qualsiasi memoria occupata dagli oggetti delle tue app, né il contenuto degli appunti. I dati vengono inviati in modo sicuro ai server Microsoft usando tecnologia di monitoraggio di Azure, con accesso limitato e pubblicati con controlli di sicurezza rigorosi da sistemi di archiviazione di Azure sicuri.
La protezione della privacy è importante per noi. Se si sospetta che la telemetria stia raccogliendo dati sensibili o che i dati vengano gestiti in modo non sicuro o inappropriato, inviare un problema nel repository dotnet/sdk o inviare un messaggio di posta elettronica a dotnet@microsoft.com per l'analisi.
La funzionalità di telemetria raccoglie i dati seguenti:
Versioni dell'SDK
Dati
Tutto
Timestamp della chiamata.
Tutto
Comando richiamato (ad esempio, "build"), con hash a partire dalla versione 2.1.
Tutto
Indirizzo IP a tre ottetti usato per determinare la posizione geografica.
Tutto
Sistema operativo e versione.
Tutto
ID di runtime (RID) in cui è in esecuzione l'SDK.
Tutto
Versione di .NET SDK.
Tutto
Profilo di telemetria: valore facoltativo usato solo con esplicito consenso esplicito dell'utente e usato internamente in Microsoft.
>=2.0
Argomenti e opzioni dei comandi: vengono raccolti diversi argomenti e opzioni (non stringhe arbitrarie). Consulta opzioni raccolte. Hash eseguito dopo la versione 2.1.300.
>=2.0
Indica se l'SDK è in esecuzione in un contenitore.
>=2.0
Framework di destinazione (dall'evento TargetFramework), con hash a partire dalla versione 2.1.
>=2.0
Indirizzo MAC (Hashed Media Access Control) (SHA256).
>=2.0
Directory di lavoro corrente con hash.
>=2.0
Rapporto di installazione riuscita, con nome file exe dell'installer con hash.
>=2.1.300
Versione del kernel.
>=2.1.300
Rilascio/versione di libc.
>=3.0.100
Indica se l'output è stato reindirizzato (true o false).
>=3.0.100
In caso di arresto anomalo dell'interfaccia della riga di comando/SDK, viene indicato il tipo di eccezione e la relativa traccia dello stack (solo il codice dell'interfaccia della riga di comando/SDK è incluso nella traccia dello stack inviata). Per ulteriori dettagli, consultare la telemetria delle eccezioni di arresto anomalo.
>=5.0.100
Hashed TargetFrameworkVersion usato per la compilazione (proprietà MSBuild)
>=5.0.100
RuntimeIdentifier con hash usato per la compilazione (proprietà MSBuild)
>=5.0.100
Hashed SelfContained utilizzato per la compilazione (proprietà MSBuild)
>=5.0.100
Hash di UseApphost utilizzato per la compilazione (proprietà MSBuild)
>=5.0.100
Hashed OutputType usato per la compilazione (proprietà MSBuild)
>=5.0.201
Hashed PublishReadyToRun usato per la compilazione (proprietà MSBuild)
>=5.0.201
Hashed PublishTrimmed usato per la compilazione (proprietà MSBuild)
>=5.0.201
Hashed PublishSingleFile usato per la compilazione (proprietà MSBuild)
>=5.0.202
Tempo trascorso dall'avvio del processo fino all'accesso al metodo principale del programma CLI, che misura il tempo di avvio dell'host e del runtime.
>=5.0.202
Tempo trascorso per il passaggio che aggiunge gli strumenti .NET al percorso alla prima esecuzione.
>=5.0.202
Tempo trascorso per visualizzare l'avviso di primo utilizzo alla prima esecuzione.
>=5.0.202
Tempo trascorso per la generazione del certificato ASP.NET al primo avvio.
>=5.0.202
Tempo trascorso per analizzare l'input CLI.
>=6.0.100
Architettura del sistema operativo
>=6.0.104
Hashed PublishReadyToRunUseCrossgen2 usato per la compilazione (proprietà MSBuild)
>=6.0.104
Hashed Crossgen2PackVersion usato per la compilazione (proprietà MSBuild)
>=6.0.104
Hashed CompileListCount utilizzato per la compilazione (proprietà MSBuild)
>=6.0.104
Hash di _ReadyToRunCompilationFailures usato per la build (proprietà MSBuild)
>=6.0.300
Se l'interfaccia a riga di comando è stata richiamata da un ambiente di integrazione continua. Per altre informazioni, vedere rilevamento dell'integrazione continua.
>=7.0.100
Hash PublishAot usato per la compilazione (proprietà MSBuild)
>=7.0.100
Protocollo di pubblicazione hashed utilizzato per la compilazione (proprietà MSBuild)
>=8.0.100
TargetPlatformIdentifier con hash usato per la compilazione (proprietà MSBuild)
>=8.0.100
Hashed HybridGlobalization usato per la compilazione (proprietà MSBuild)
>=8.0.100
Indica se viene usato .NET Blazor WebAssembly SDK.
>=8.0.100
Indica se viene usato .NET WebAssembly SDK.
>=8.0.100
Indica se viene usato .NET MAUI.
>=8.0.100
Indica se viene usato .NET Mobile SDK.
>=8.0.100
Indica se vengono usati altri SDK per dispositivi mobili (ad esempio: Avalonia, Uno).
>=8.0.100
Indica se viene usato Mono AOT.
>=8.0.100
Indica se la funzionalità di stripping IL del Mono AOT viene utilizzata.
>=8.0.100
Indica se viene usato l'interprete Mono.
>=8.0.100
Indica se viene usata la modalità libreria per dispositivi mobili.
>=8.0.100
Indica se viene usato NativeAOT.
>=8.0.100
Usata la versione del pacchetto di runtime Mono.
Opzioni raccolte
Alcuni comandi inviano dati aggiuntivi. Un subset di comandi invia il primo argomento:
Comando
Dati del primo argomento inviati
dotnet help <arg>
Si sta effettuando una ricerca nella Guida del comando.
dotnet new <arg>
Nome del modello (con hash).
dotnet add <arg>
La parola package o reference.
dotnet remove <arg>
La parola package o reference.
dotnet list <arg>
La parola package o reference.
dotnet sln <arg>
La parola add, listo remove.
dotnet nuget <arg>
La parola delete, localso push.
dotnet workload <subcommand> <arg>
La parola install, update, list, search, uninstall, repair, restore e il nome del carico di lavoro (con hash).
dotnet tool <subcommand> <arg>
La parola install, update, list, search, uninstall, run e il nome dello strumento dotnet (con hash).
Se vengono usati, un subset di comandi invia opzioni selezionate, insieme ai relativi valori:
Opzione
Comandi
--verbosity
Tutti i comandi
--language
dotnet new
--configuration
dotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test
Quando l'SDK non riesce a risolvere un comando predefinito, qualsiasi resolver di comandi che risolve correttamente il comando invia un hash del nome del comando insieme al nome del sistema di risoluzione dei comandi.
Ad eccezione di --verbosity e --sdk-package-version, tutti gli altri valori vengono hashati a partire da .NET Core 2.1.100 SDK.
Telemetria del motore di template
Il comando di creazione di istanze del modello dotnet new raccoglie dati aggiuntivi per i modelli creati da Microsoft, a partire da .NET Core 2.1.100 SDK:
--framework
--auth
Telemetria degli errori di arresto anomalo
Se la CLI/SDK di .NET si blocca, raccoglie il nome dell'eccezione e la traccia dello stack del codice della CLI/SDK. Queste informazioni vengono raccolte per valutare i problemi e migliorare la qualità di .NET SDK e dell'interfaccia della riga di comando. Questo articolo fornisce informazioni sui dati raccolti. Fornisce anche suggerimenti su come gli utenti che creano la propria versione di .NET SDK possono evitare la divulgazione accidentale di informazioni personali o riservate.
L'interfaccia della riga di comando .NET raccoglie informazioni solo per le eccezioni CLI/SDK, non per le eccezioni nella tua applicazione. I dati raccolti contengono il nome dell'eccezione e la traccia dello stack. Questa stack trace è di codice CLI/SDK.
L'esempio seguente illustra il tipo di dati raccolti:
System.IO.IOException
at System.ConsolePal.WindowsConsoleStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.Write(Char[] buffer)
at System.IO.TextWriter.WriteLine()
at System.IO.TextWriter.SyncTextWriter.WriteLine()
at Microsoft.DotNet.Cli.Utils.Reporter.WriteLine()
at Microsoft.DotNet.Tools.Run.RunCommand.EnsureProjectIsBuilt()
at Microsoft.DotNet.Tools.Run.RunCommand.Execute()
at Microsoft.DotNet.Tools.Run.RunCommand.Run(String[] args)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
at Microsoft.DotNet.Cli.Program.Main(String[] args)
Rilevamento dell'integrazione continua
Per determinare se la .NET CLI è in esecuzione in un ambiente di integrazione continua, verifica la presenza e i valori di diverse variabili di ambiente note impostate dai fornitori CI comuni.
Di seguito è riportato l'elenco completo delle variabili di ambiente e le operazioni eseguite con i relativi valori. Si noti che in ogni caso, il valore della variabile di ambiente non viene mai raccolto, usato solo per impostare un flag booleano.
Variabili
Fornitore
Azione
TF_BUILD
Azure Pipelines
Analizzare un valore booleano
GITHUB_ACTIONS
GitHub Actions
Analizzare un valore booleano
APPVEYOR
Appveyor
Analizzare un valore booleano
CI
Molti/più
Analizzare un valore booleano
TRAVIS
Travis CI
Analizzare un valore booleano
CIRCLECI
Circle CI
Analizzare un valore booleano
CODEBUILD_BUILD_ID, AWS_REGION
Amazon Web Services CodeBuild
Verifica se tutti sono presenti e non nulli
BUILD_ID, BUILD_URL
Jenkins
Controllare se tutti sono presenti e non Null
BUILD_ID, PROJECT_ID
Google Cloud Build
Controllare che tutti siano presenti e non nulli
TEAMCITY_VERSION
TeamCity
Controllare se presente e non Null
JB_SPACE_API_URL
JetBrains Space
Controllare se presente e non Null
Evitare la divulgazione accidentale di informazioni
I collaboratori .NET e chiunque altro esegua una versione di .NET SDK creata da soli deve considerare il percorso del codice sorgente dell'SDK. Se si verifica un arresto anomalo durante l'uso di un SDK .NET che è una compilazione di debug personalizzata o configurata con file di simboli di compilazione personalizzati, il percorso del file di origine DELL'SDK dal computer di compilazione viene raccolto come parte dell'analisi dello stack e non viene eseguito l'hashing.
Per questo motivo, le build personalizzate di .NET SDK non devono trovarsi nelle directory i cui nomi di percorso espongono informazioni personali o riservate.
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
In questo modulo verranno fornite informazioni sull'uso dei dati di telemetria per registrare il comportamento di un'applicazione nativa del cloud e sul modo in cui lo stack .NET Aspire semplifica l'archiviazione dei dati e la loro visualizzazione in un secondo momento.
Informazioni sugli strumenti .NET, tra cui l'SDK e l'interfaccia della riga di comando di .NET, la diagnostica e la strumentazione, l'analisi del codice e la convalida dei pacchetti.