Telemetria di .NET SDK e .NET CLI
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.
I dati raccolti vengono pubblicati in modo aggregato nella Creative Commons Attribution License. Alcuni dei dati raccolti vengono pubblicati su .NET CLI dati di telemetria.
Ambito
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 , list o remove . |
dotnet nuget <arg> |
La parola delete , locals o 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 |
--framework |
dotnet build , dotnet clean , dotnet publish , dotnet run , dotnet test , dotnet vstest |
--runtime |
dotnet build , dotnet publish |
--platform |
dotnet vstest |
--logger |
dotnet vstest |
--sdk-package-version |
dotnet migrate |
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.