Télémétrie du Kit de développement logiciel (SDK) .NET et de l’interface CLI .NET
Le SDK .NET inclut une fonctionnalité de télémétrie qui collecte les données d’utilisation et les envoie à Microsoft lorsque vous utilisez les commandes .NET CLI . Les données d’utilisation incluent des informations d’exception lorsque l’interface CLI .NET se bloque. L’interface CLI .NET est fournie avec le Kit de développement logiciel (SDK) .NET et est l’ensemble de verbes qui vous permettent de générer, tester et publier vos applications .NET. Les données de télémétrie aident l’équipe .NET à comprendre comment les outils sont utilisés afin qu’ils puissent être améliorés. Les informations sur les défaillances aident l’équipe à résoudre les problèmes et à résoudre les bogues.
Les données collectées sont publiées dans l’agrégat sous la licence d’attribution Creative Commons . Certaines des données collectées sont publiées sur les données de télémétrie de l’interface CLI .NET.
Portée
dotnet
a deux fonctions : exécuter des applications et exécuter des commandes CLI. La télémétrie n'est pas collectée lors de l’utilisation de dotnet
pour démarrer une application au format suivant :
dotnet [path-to-app].dll
La télémétrie est collectée lors de l’utilisation de l’une des commandes CLI .NET, telles que :
dotnet build
dotnet pack
dotnet run
Comment désactiver
La fonctionnalité de télémétrie du Kit de développement logiciel (SDK) .NET est activée par défaut pour les distributions Microsoft du Kit de développement logiciel (SDK). Pour désactiver la fonctionnalité de télémétrie, définissez la variable d’environnement DOTNET_CLI_TELEMETRY_OPTOUT
sur 1
ou true
.
Une entrée de télémétrie unique est également envoyée par le programme d’installation du Kit de développement logiciel (SDK) .NET lorsqu’une installation réussie se produit. Pour refuser, définissez la variable d’environnement DOTNET_CLI_TELEMETRY_OPTOUT
avant d’installer le Kit de développement logiciel (SDK) .NET.
Important
Pour désactiver le programme d’installation après avoir démarré le programme d’installation : fermez le programme d’installation, définissez la variable d’environnement, puis réexécutez le programme d’installation avec cette valeur définie.
Divulgation
Le Kit de développement logiciel (SDK) .NET affiche du texte similaire à ce qui suit lorsque vous exécutez l’une des commandes cli .NET (par exemple, dotnet build
). Le texte peut varier légèrement en fonction de la version du Kit de développement logiciel (SDK) que vous exécutez. Cette expérience de « première exécution » est la façon dont Microsoft vous avertit de la collecte de données.
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
Pour désactiver ce message et le message d’accueil .NET, définissez la variable d’environnement DOTNET_NOLOGO
sur true
. Notez que cette variable n’a aucun effet sur la désactivation de la télémétrie.
Points de données
La fonctionnalité de télémétrie ne collecte pas de données personnelles, telles que les noms d’utilisateur ou les adresses e-mail. Il n’analyse pas votre code et n’extrait pas les données au niveau du projet, telles que le nom, le référentiel ou l’auteur. Elle n’extrait pas le contenu des fichiers de données consultés ou créés par vos applications, les images mémoire de la mémoire occupée par les objets de vos applications ni le contenu du Presse-papiers. Les données sont envoyées en toute sécurité aux serveurs Microsoft à l’aide de technologie de Azure Monitor, conservées sous un accès restreint et publiées sous des contrôles de sécurité stricts à partir de systèmes de stockage Azure sécurisés .
La protection de votre vie privée est importante pour nous. Si vous soupçonnez que les données de télémétrie collectent des données sensibles ou que les données sont gérées de manière non sécurisée ou inappropriée, envoyez un problème dans le dépôt dotnet/sdk
La fonctionnalité de télémétrie collecte les données suivantes :
Versions du Kit de développement logiciel (SDK | Données |
---|---|
Tous | Horodatage de l’appel. |
Tous | Commande invoquée (par exemple, « construire »), hachée depuis la version 2.1. |
Tous | Adresse IP de trois octets utilisée pour déterminer l’emplacement géographique. |
Tous | Système d’exploitation et version. |
Tous | ID d’exécution (RID) sur lequel le Kit de développement logiciel (SDK) s’exécute. |
Tous | Version du Kit de développement logiciel (SDK) .NET. |
Tous | Profil de télémétrie : valeur facultative utilisée uniquement avec l’opt-in d’utilisateur explicite et utilisée en interne sur Microsoft. |
>=2.0 | Arguments et options de commande : plusieurs arguments et options sont collectés (pas des chaînes arbitraires). Consultez options collectées. Hachage après la version 2.1.300. |
>=2.0 | Indique si le Kit de développement logiciel (SDK) s’exécute dans un conteneur. |
>=2.0 | Frameworks cibles (tirés de l’événement TargetFramework ), hachés à partir de la version 2.1. |
>=2.0 | Adresse MAC hachée (contrôle d'accès aux médias) (SHA256). |
>=2.0 | Répertoire de travail actif haché. |
>=2.0 | Installez le rapport de réussite, avec le nom de fichier exe du programme d’installation haché. |
>=2.1.300 | Version du noyau. |
>=2,1.300 | Version de Libc. |
>=3.0.100 | Indique si la sortie a été redirigée (true ou false). |
>=3.0.100 | En cas de plantage CLI/SDK, type d’exception et rapport des appels de procédures (seul le code CLI/SDK est inclus dans le rapport des appels de procédure envoyé). Pour plus d’informations, consultez Télémétrie des exceptions d’incident. |
>=5.0.100 | Hachage de TargetFrameworkVersion utilisé lors de la compilation (propriété MSBuild) |
>=5.0.100 | Identifiant d'exécution haché utilisé pour la compilation (propriété MSBuild) |
>=5.0.100 | Hachage SelfContained utilisé pour le build (propriété MSBuild) |
>=5.0.100 | Hachage UseApphost utilisé pour le build (propriété MSBuild) |
>=5.0.100 | Hachage OutputType utilisé pour le build (propriété MSBuild) |
>=5.0.201 | Hashed PublishReadyToRun utilisé pour la compilation (propriété MSBuild) |
>=5.0.201 | Hachage PublishTrimmed utilisé pour le build (propriété MSBuild) |
>=5.0.201 | Hashed PublishSingleFile utilisé pour la compilation (propriété MSBuild) |
>=5.0.202 | Temps écoulé entre le début du processus et l’entrée dans la méthode principale du programme CLI, mesurant le démarrage de l'hôte et du système runtime. |
>=5.0.202 | Temps écoulé pour l’étape qui ajoute les outils .NET au chemin d’accès lors du premier démarrage. |
>=5.0.202 | Temps écoulé pour afficher pour la première fois l’avis d’utilisation lors de la première exécution. |
>=5.0.202 | Temps écoulé pour générer ASP.NET certificat lors de la première exécution. |
>=5.0.202 | Temps écoulé pour analyser l’entrée CLI. |
>=6.0.100 | Architecture du système d’exploitation |
>=6.0.104 | Hashed PublishReadyToRunUseCrossgen2 utilisé pour la compilation (propriété MSBuild) |
>=6.0.104 | Hachage Crossgen2PackVersion utilisé pour le build (propriété MSBuild) |
>=6.0.104 | CompileListCount haché utilisé pour la compilation (propriété MSBuild) |
>=6.0.104 | Hachage _ReadyToRunCompilationFailures utilisé pour le build (propriété MSBuild) |
>=6.0.300 | Si l’interface CLI a été appelée à partir d’un environnement d’intégration continue. Pour plus d’informations, consultez Détection d’intégration continue. |
>=7.0.100 | Hachage PublishAot utilisé pour le build (propriété MSBuild) |
>=7.0.100 | Hachage PublishProtocol utilisé pour le build (propriété MSBuild) |
>=8.0.100 | Identifiant de plateforme cible haché utilisé pour la compilation (propriété MSBuild) |
>=8.0.100 | Hachage HybridGlobalization utilisé pour le build (propriété MSBuild) |
>=8.0.100 | Indique si le KIT SDK .NET Blazor WebAssembly est utilisé. |
>=8.0.100 | Indique si le Kit de développement logiciel (SDK) WebAssembly .NET est utilisé. |
>=8.0.100 | Indique si .NET MAUI est utilisé. |
>=8.0.100 | Indique si le Kit de développement logiciel (SDK) mobile .NET est utilisé. |
>=8.0.100 | Indique si d’autres kits SDK mobiles sont utilisés (comme : Avalonia, Uno). |
>=8.0.100 | Indique si Mono AOT est utilisé. |
>=8.0.100 | Indique si la fonctionnalité IL de bande AOT Mono est utilisée. |
>=8.0.100 | Indique si l’interpréteur Mono est utilisé. |
>=8.0.100 | Indique si le mode bibliothèque pour mobile est utilisé. |
>=8.0.100 | Indique si NativeAOT est utilisé. |
>=8.0.100 | Version du pack d’exécution Mono utilisée. |
Options collectées
Certaines commandes envoient des données supplémentaires. Un sous-ensemble de commandes envoie le premier argument :
Commande | Premières données d’argument envoyées |
---|---|
dotnet help <arg> |
La commande help fait l’objet d’une requête. |
dotnet new <arg> |
Nom du modèle (haché). |
dotnet add <arg> |
Mot package ou reference . |
dotnet remove <arg> |
Mot package ou reference . |
dotnet list <arg> |
Mot package ou reference . |
dotnet sln <arg> |
Mot add , list ou remove . |
dotnet nuget <arg> |
Mot delete , locals ou push . |
dotnet workload <subcommand> <arg> |
Le mot install , update , list , search , uninstall , repair , restore et le nom de la charge de travail (hachage). |
dotnet tool <subcommand> <arg> |
Le mot install , update , list , search , uninstall , run et le nom de l’outil dotnet (haché). |
Un sous-ensemble de commandes envoie des options sélectionnées s’ils sont utilisés, ainsi que leurs valeurs :
Option | Commandes |
---|---|
--verbosity |
Toutes les commandes |
--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 |
Lorsque le Kit de développement logiciel (SDK) ne parvient pas à résoudre une commande intégrée, tout programme de résolution de commande qui résout correctement la commande envoie un hachage du nom de la commande, ainsi que le nom du type de programme de résolution de commande.
À l’exception de --verbosity
et de --sdk-package-version
, toutes les autres valeurs sont hachées à partir du Kit de développement logiciel (SDK) .NET Core 2.1.100.
Télémétrie du moteur de modèle
La commande d’instanciation de modèle dotnet new
collecte des données supplémentaires pour les modèles créés par Microsoft, à partir du KIT SDK .NET Core 2.1.100 :
--framework
--auth
Télémétrie des exceptions d’incident
Si l’interface CLI/SDK .NET se bloque, elle collecte le nom de l’exception et de la trace de pile du code CLI/SDK. Ces informations sont collectées pour évaluer les problèmes et améliorer la qualité du Kit de développement logiciel (SDK) .NET et de l’interface CLI. Cet article fournit des informations sur les données que nous collectons. Il fournit également des conseils sur la façon dont les utilisateurs qui créent leur propre version du Kit de développement logiciel (SDK) .NET peuvent éviter la divulgation accidentelle d’informations personnelles ou sensibles.
L’interface CLI .NET collecte uniquement des informations pour les exceptions CLI/SDK, et non les exceptions dans votre application. Les données collectées contiennent le nom de l’exception et le rapport des appels de procédure. Ce rapport porte sur le code CLI/SDK.
L’exemple suivant montre le type de données collectées :
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)
Détection continue de l’intégration
Pour détecter si l’interface CLI .NET s’exécute dans un environnement d’intégration continue, l’interface CLI .NET sonde la présence et les valeurs de plusieurs variables d’environnement connues définies par les fournisseurs CI courants.
La liste complète des variables d’environnement, et ce qui est fait avec leurs valeurs, est illustrée ci-dessous. Notez que dans tous les cas, la valeur de la variable d’environnement n’est jamais collectée, utilisée uniquement pour définir un indicateur booléen.
Variable(s) | Fournisseur | Action |
---|---|---|
TF_BUILD | Azure Pipelines | Analyser la valeur booléenne |
GITHUB_ACTIONS | GitHub Actions | Analyser la valeur booléenne |
APPVEYOR | Appveyor | Analyser la valeur booléenne |
CI | Beaucoup/La plupart | Analyser la valeur booléenne |
TRAVIS | Travis CI | Analyser la valeur booléenne |
CIRCLECI | CircleCI | Analyser la valeur booléenne |
CODEBUILD_BUILD_ID, AWS_REGION | Amazon Web Services CodeBuild | Vérifier si tous sont présents et non null |
BUILD_ID, BUILD_URL | Jenkins | Vérifier si tous sont présents et non null |
ID_DE_CONSTRUCTION, ID_DU_PROJET | Google Cloud Build | Vérifier si tous sont présents et non null |
TEAMCITY_VERSION | TeamCity | Vérifier s’il est présent et non nul |
JB_SPACE_API_URL | JetBrains Space | Vérifier si présent et non null |
Éviter la divulgation accidentelle d’informations
Les contributeurs .NET et toute autre personne exécutant une version du Kit de développement logiciel (SDK) .NET qu’ils ont créé eux-mêmes doivent prendre en compte le chemin d’accès à leur code source du SDK. Si un incident se produit lors de l’utilisation d’un SDK .NET qui est une version de débogage personnalisée ou configuré avec des fichiers de symboles de compilation personnalisés, le chemin du fichier source du SDK à partir de la machine de build est collecté dans le cadre de la trace de pile et n’est pas haché.
En raison de cela, les builds personnalisées du Kit de développement logiciel (SDK) .NET ne doivent pas se trouver dans des répertoires dont les noms de chemin d’accès exposent des informations personnelles ou sensibles.