SDK .NET et télémétrie CLI .NET
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.
Les données collectées sont publiées dans en groupe 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.
Étendue
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 |
--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 |
À 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.