Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 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. Les données de télémétrie ne sont pas collectées lors de l'utilisation de dotnet pour démarrer une application au format suivant :
dotnet [path-to-app].dll
Les données de télémétrie sont collectées lors de l’utilisation d’une des commandes .NET CLI , telles que :
dotnet builddotnet packdotnet 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.
Le programme d’installation du Kit de développement logiciel (SDK) .NET envoie une entrée de télémétrie unique 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.
Importante
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 à la sortie suivante 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 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. Cette variable n’a aucun effet sur la désactivation de la télémétrie.
Note
Changement cassant : Comportement des messages de télémétrie écrits dans stderr les versions récentes du Kit de développement logiciel (SDK) .NET. Pour plus d’informations, consultez les commandes dotnet CLI qui enregistrent des données non pertinentes aux commandes dans stderr.
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. Il n’extrait pas le contenu des fichiers de données accessibles ou créés par vos applications, les extraires de toute mémoire occupée par les objets de vos applications, ou le contenu du presse-papiers. Les données sont envoyées en toute sécurité aux serveurs Microsoft à l’aide de la technologie Azure Monitor . Les données sont 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 confidentialité est importante pour Microsoft. 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, créez un problème dans le référentiel dotnet/sdk .
Pour plus d’informations sur la confidentialité et les données personnelles collectées, consultez la Déclaration de confidentialité Microsoft.
Les onglets suivants affichent les données de télémétrie capturées par version du Kit de développement logiciel (SDK) :
-
Sdk version 10.0.100 et ultérieure :
- Identificateur de projet haché pour
dotnet run. - Type d'application soit basée sur des fichiers, soit sur un projet pour
dotnet run. - Nom du profil de lancement s’il est spécifié pour
dotnet run. - Indique si un profil de lancement a été spécifié pour
dotnet run. - Modèle de configuration des paramètres de lancement utilisé (le cas échéant) pour
dotnet run. - Nombre de kits SDK utilisés pour
dotnet run. - Nombre de PackageReferences pour
dotnet run. - Nombre de ProjectReferences pour
dotnet run. - Nombre de propriétés supplémentaires pour les applications basées sur des fichiers avec
dotnet run. - Indique si MSBuild a été utilisé pour les applications basées sur des fichiers avec
dotnet run. - Indique si le compilateur Roslyn a été utilisé pour les applications basées sur des fichiers avec
dotnet run. - Nom de l’agent LLM détecté si l’interface en ligne de commande a été invoquée depuis un agent LLM. Pour plus d’informations, consultez la détection LLM.
- Capture l’état
global.jsonau moment où une commande est appelée. L’état est l’une des valeurs suivantes : not_found, valide, invalid_json ou invalid_data. - Quelles fabriques de tâches MSBuild sont utilisées pour charger et exécuter des tâches (y compris les tâches C# en ligne, les tâches conscientes du multithreading et les tâches hors processus) et combien de tâches elles exécutent.
- Nombre de tâches MSBuild exécutées dans TaskHosts par rapport aux tâches non exécutées dans TaskHosts.
- Identificateur de projet haché pour
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 :
| Choix | Commandes |
|---|---|
--verbosity |
Toutes les commandes |
--language |
dotnet new |
--configuration |
dotnet build, , dotnet cleandotnet publish, , dotnet rundotnet test |
--framework |
dotnet build, , dotnet clean, dotnet publishdotnet run, , dotnet testdotnet 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.
À compter du Kit de développement logiciel (SDK) .NET Core 2.1.100, le Kit de développement logiciel (SDK) hachage toutes ces valeurs à l’exception --verbosity et --sdk-package-version.
Télémétrie du moteur de modèle
À compter du Kit de développement logiciel (SDK) .NET Core 2.1.100, la dotnet new commande d’instanciation de modèle collecte des données supplémentaires pour les modèles créés par Microsoft :
--framework--auth
dotnet run telemetry
À compter du Kit de développement logiciel (SDK) .NET 10.0.100, la dotnet run commande collecte les données de télémétrie basées sur les fonctionnalités pour faciliter le développement et l’utilisation d’applications basées sur des fichiers.
Télémétrie pour toutes les dotnet run exécutions :
- Type d’application (basé sur un fichier ou basé sur un projet)
- Identificateur de projet ou de fichier haché
- Nombre de kits SDK utilisés
- Nombre de PackageReferences
- Nombre de ProjectReferences
- Démarrer l'utilisation du profil (que
--launch-profileou--no-launch-profileait été utilisé) - Indique si le profil de lancement est un profil par défaut
- Le modèle de paramètres de lancement est appliqué, le cas échéant
Télémétrie pour les applications basées sur des fichiers uniquement :
- Nombre de propriétés supplémentaires (par exemple,
#:propertydirectives) - Indique si MSBuild a été utilisé pour la compilation
- Indique si le compilateur Roslyn a été utilisé directement
Télémétrie des exceptions d’incident
Si l’interface CLI ou le Kit de développement logiciel (SDK) .NET se bloque, il collecte le nom de l’exception et de la trace de pile du code CLI ou SDK. L’interface CLI .NET collecte ces informations pour évaluer les problèmes et améliorer la qualité du Kit de développement logiciel (SDK) .NET et de l’interface CLI.
L’interface CLI .NET collecte des informations pour les exceptions CLI ou SDK uniquement, 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. Cette trace de pile est de code CLI ou 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)
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é.
En raison de cela, vous ne devez pas placer de builds personnalisées du Kit de développement logiciel (SDK) .NET dans les répertoires dont les noms de chemin exposent des informations personnelles ou sensibles.
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 vérifie la présence et les valeurs de plusieurs variables d’environnement connues définies par les fournisseurs CI courants.
La liste suivante montre les variables d’environnement et la façon dont l’interface CLI .NET utilise leurs valeurs. L’interface CLI .NET ne collecte pas la valeur d’une variable d’environnement ; elle utilise uniquement la valeur pour définir un indicateur booléen.
| Variable(s) | Fournisseur | Action |
|---|---|---|
TF_BUILD |
Azure Pipelines | Analyser la valeur booléenne |
GITHUB_ACTIONS |
GitHub Actions (actions de GitHub) | 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, un service de compilation automatisée et intégrée. | 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 s’il est présent et non nul |
JB_SPACE_API_URL |
JetBrains Space | Vérifier s’il est présent et non nul |
Détection LLM
Pour détecter si l’interface CLI .NET s’exécute dans le contexte d’un agent LLM, l’interface CLI .NET vérifie la présence et les valeurs de plusieurs variables d’environnement définies par les agents LLM et les assistants de codage IA.
Le tableau suivant montre le nom de l’agent, la variable d’environnement utilisée pour la détection et la valeur du type d’agent signalé. Les valeurs réelles de ces variables d’environnement ne sont pas collectées : elles sont utilisées uniquement pour identifier le type d’agent.
| Agent LLM | Variable | Valeur |
|---|---|---|
| GitHub Copilot, outil d'assistance au codage | GITHUB_COPILOT_CLI_MODE |
« copilot » |
| Claude Code | CLAUDECODE |
« claude » |
| Cursor | CURSOR_EDITOR |
« curseur » |
| Google Gemini | GEMINI_CLI |
« gemini » |
Si l’interface CLI .NET détecte plusieurs agents, elle concatène les différentes valeurs de l’agent avec une virgule pour produire la valeur finale.