Le Kit de développement logiciel (SDK) .NET inclut une fonctionnalité de télémétrie qui collecte les données d’utilisation et les envoie à Microsoft lorsque vous utilisez des commandes CLI .NET. Les données d’utilisation incluent les 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. Il s’agit de 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 échecs aident l’équipe à résoudre les problèmes et à corriger les bogues.
dotnet a deux fonctions : exécuter les applications et exécuter les commandes CLI. Les informations de télémétrie ne sont pas collectées quand vous utilisez 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é
La fonctionnalité de télémétrie du kit SDK .NET est activée par défaut pour les distributions Microsoft du kit 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 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 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 d’informations
Le Kit de développement logiciel (SDK) .NET affiche du texte similaire à ce qui suit lors de la première exécution de l’une des commandes CLI .NET (par exemple dotnet build). Le texte peut varier légèrement selon la version du SDK que vous exécutez. Lors de cette première exécution, Microsoft vous informe sur 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, comme les noms d’utilisateurs et les adresses e-mail. Elle n’analyse pas votre code et n’extrait pas de données au niveau du projet, comme 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 de manière sécurisée à des serveurs Microsoft à l’aide de la technologie Azure Monitor, stockées à un emplacement dont l’accès est strictement limité et publiées conformément à des contrôles de sécurité stricts à partir de systèmes Stockage Azure sécurisés.
Nous prenons la protection de vos données au sérieux. 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, déposez un rapport dans le référentiel dotnet/sdk ou envoyez un e-mail à dotnet@microsoft.com à des fins d’investigation.
La fonctionnalité de télémétrie collecte les données suivantes :
Versions du SDK
Données
Tous
Horodatage de l’appel.
Tous
Commande appelée (par exemple, « build »), hachée à partir de 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 du runtime (RID) sur lequel le kit 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’adhésion explicite de l’utilisateur et employée en interne par Microsoft.
>=2.0
Arguments et options de commande : plusieurs arguments et options sont collectés (pas de chaînes arbitraires). Consultez options collectées. Hachage après la version 2.1.300.
>=2.0
Si le SDK est en cours d’exécution 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 (Hashed Media Access Control) (SHA256).
>=2.0
Répertoire de travail actuel haché.
>=2.0
Rapport d’installation réussie, avec hachage du nom de fichier .exe du programme d’installation.
>=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 targetFrameworkVersion utilisé pour le build (propriété MSBuild)
>=5.0.100
Hachage RuntimeIdentifier utilisé pour le build (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
Hachage PublishReadyToRun utilisé pour le build (propriété MSBuild)
>=5.0.201
Hachage PublishTrimmed utilisé pour le build (propriété MSBuild)
>=5.0.201
Hachage PublishSingleFile utilisé pour le build (propriété MSBuild)
>=5.0.202
Temps écoulé entre le début du processus et l’entrée de la méthode principale du programme CLI, mesure de l’hôte et du démarrage de l’exécution.
>=5.0.202
Temps écoulé pour l’étape qui ajoute .NET Tools au chemin d’accès lors de la première exécution.
>=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 le certificat ASP.NET 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
Hachage PublishReadyToRunUseCrossgen2 utilisé pour le build (propriété MSBuild)
>=6.0.104
Hachage Crossgen2PackVersion utilisé pour le build (propriété MSBuild)
>=6.0.104
Hachage CompileListCount utilisé pour le build (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
Hachage TargetPlatformIdentifier utilisé pour le build (propriété MSBuild)
>=8.0.100
Hachage HybridGlobalization utilisé pour le build (propriété MSBuild)
>=8.0.100
Si le kit SDK .NET Blazor WebAssembly est utilisé.
>=8.0.100
Si le Kit de développement logiciel (SDK) WebAssembly .NET est utilisé.
>=8.0.100
Si .NET MAUI est utilisé.
>=8.0.100
Si le Kit de développement logiciel (SDK) mobile .NET est utilisé.
>=8.0.100
Si d’autres kits SDK mobiles sont utilisés (comme : Avalonia, Uno).
>=8.0.100
Si Mono AOT est utilisé.
>=8.0.100
Si la fonctionnalité IL de bande AOT Mono est utilisée.
>=8.0.100
Si l’interpréteur Mono est utilisé.
>=8.0.100
Si le mode bibliothèque pour mobile est utilisé.
>=8.0.100
Si NativeAOT est utilisé.
>=8.0.100
Version du pack runtime Mono utilisée.
Options collectées
Certaines commandes envoient des données supplémentaires. Un sous-ensemble de commandes envoie le premier argument :
Commande
Données du premier 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 (hachage).
Un sous-ensemble de commandes envoie les options sélectionnées si elles sont utilisées, ainsi que leurs valeurs :
Option
Commandes
--verbosity
Toutes les commandes
--language
dotnet new
--configuration
dotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test
À l’exception de --verbosity et --sdk-package-version, toutes les autres valeurs sont hachées à partir du 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 de développement logiciel (SDK) .NET Core 2.1.100 :
--framework
--auth
Télémétrie des exceptions d’incident
Si un incident se produit sur l’interface CLI/SDK .NET, 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. Cela 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 des informations pour les exceptions CLI/SDK uniquement, et non pour les exceptions de 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 des 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 d’intégration continue
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, et n’est utilisée que 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
Many/Most
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
BUILD_ID, PROJECT_ID
Google Cloud Build
Vérifier si tous sont présents et non null
TEAMCITY_VERSION
TeamCity
Vérifier si présent et non null
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 un build de débogage personnalisé ou configuré avec des fichiers de symboles de build 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é.
Pour cette raison, 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.
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Neste módulo, você aprenderá a usar a telemetria para registrar o comportamento de um aplicativo nativo de nuvem e como a pilha do .NET Aspire facilita o armazenamento de dados e sua exibição posterior.