Partager via


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 ou envoyez un e-mail à pour examen.

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.

Voir aussi