Telemetriedaten für .NET SDK und .NET-CLI

Das .NET SDK enthält eine Telemetriefunktion, die bei Verwendung von .NET CLI-Befehlen Nutzungsdaten sammelt und an Microsoft sendet. Die Nutzungsdaten enthalten Informationen zu Ausnahmen, wenn die .NET CLI abstürzt. Die .NET-CLI umfasst das .NET SDK und besteht aus mehreren Verben, die es Ihnen ermöglichen, Ihre .NET-Apps zu erstellen, zu testen und zu veröffentlichen. Anhand der Telemetriedaten kann das .NET-Team die Nutzung der Tools nachvollziehen, um sie zu verbessern. Informationen zu Fehlern helfen dem Team, Probleme und Fehler zu beheben.

Die erfassten Daten werden unter der Creative Commons Attribution-Lizenz in aggregierter Form veröffentlicht. Einige der gesammelten Daten werden unter .NET CLI-Telemetriedaten veröffentlicht.

`Scope`

dotnet hat zwei Funktionen: das Ausführen von Apps und das Ausführen von CLI-Befehlen. Es werden keine Telemetriedaten erfasst, wenn dotnet zum Starten einer Anwendung im folgenden Format verwendet wird:

  • dotnet [path-to-app].dll

Es werden Telemetriedaten erfasst, wenn einer der .NET-CLI-Befehle verwendet wird, zum Beispiel:

  • dotnet build
  • dotnet pack
  • dotnet run

Deaktivierung der Telemetriefunktion

Das Telemetriefeature des .NET SDK ist für Microsoft-Distributionen des SDK standardmäßig aktiviert. Sie können das Telemetriefeature deaktivieren, indem Sie die Umgebungsvariable DOTNET_CLI_TELEMETRY_OPTOUT auf 1 oder true festlegen.

Außerdem wird ein einzelner Telemetrieeintrag vom .NET SDK-Installationsprogramm gesendet, wenn eine Installation erfolgreich ist. Sie können zur Deaktivierung die Umgebungsvariable DOTNET_CLI_TELEMETRY_OPTOUT festlegen, bevor Sie das .NET SDK installieren.

Wichtig

Wenn Sie die Deaktivierung durchführen möchten, nachdem Sie das Installationsprogramm gestartet haben, schließen Sie das Installationsprogramm, legen Sie die Umgebungsvariable fest, und führen Sie das Installationsprogramm dann noch mal mit diesen Werten aus.

Offenlegung

Das .NET SDK zeigt beim ersten Ausführen eines der .NET-CLI-Befehle (z. B. dotnet build) den folgenden Text an. Der Text kann abhängig von der von Ihnen ausgeführten Version des SDK leicht variieren. Über diese erste Ausführung benachrichtigt Microsoft Sie über die Datensammlung.

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

Legen Sie die Umgebungsvariable DOTNET_NOLOGO auf true fest, um diese Meldung und die .NET-Willkommensmeldung zu deaktivieren. Beachten Sie, dass mit dieser Variable nicht die Übertragung von Telemetriedaten deaktiviert wird.

Datenpunkte

Das Telemetriefeature erfasst keine personenbezogenen Daten wie Benutzernamen oder E-Mail-Adressen. Es überprüft Ihren Code nicht und extrahiert keine vertraulichen Daten auf Projektebene wie den Namen, das Repository oder den Autor. Es extrahiert nicht den Inhalt von Datendateien, auf die von Ihren Apps zugegriffen wird oder die von Ihren Apps erstellt werden. Darüber hinaus werden keine Speicherabbilder des von den App-Objekten belegten Speichers oder die Inhalte der Zwischenablage extrahiert. Die Daten werden mithilfe von Azure Monitor sicher an die Microsoft-Server gesendet, unter eingeschränktem Zugriff gespeichert und unter strikter Sicherheitskontrolle durch die Systeme von Azure Storage veröffentlicht.

Der Schutz Ihrer Privatsphäre ist uns wichtig. Wenn Sie vermuten, dass durch die Telemetrie vertrauliche Daten erfasst oder die Daten nicht sicher oder ordnungsgemäß verarbeitet werden, melden Sie ein Problem mit dem dotnet/sdk-Repository, oder senden Sie eine E-Mail an dotnet@microsoft.com, damit dies überprüft wird.

Das Telemetriefeature erfasst die folgenden Daten:

SDK-Versionen Daten
Alle Den Zeitstempel des Aufrufs
Alle Den aufgerufenen Befehl (zum Beispiel „build“), ab Version 2.1 gehasht
Alle Die aus drei Oktetten bestehende IP-Adresse, die zur Bestimmung des geografischen Standorts verwendet wird
Alle Betriebssystem und Version
Alle Die Runtime-ID (RID), auf der das SDK ausgeführt wird
Alle Version des .NET SDK
Alle Telemetrieprofil: ein optionaler Wert, der nur bei der expliziten Benutzeranmeldung und intern bei Microsoft verwendet wird.
>=2.0 Befehlsargumente und -optionen: Es werden mehrere Argumente und Optionen erfasst (keine beliebigen Zeichenfolgen). Weitere Informationen finden Sie unter Gesammelte Optionen. Ab Version 2.1.300 gehasht
>=2.0 Ob das SDK in einem Container ausgeführt wird.
>=2.0 Zielframeworks (aus dem Ereignis TargetFramework), ab Version 2.1 gehasht
>=2.0 MAC-Adresse (Media Access Control) mit Hashwert (SHA256).
>=2.0 Das derzeitige Arbeitsverzeichnis mit Hash.
>=2.0 Erfolgsbericht zur Installation mit gehashtem EXE-Dateinamen
>=2.1.300 Kernelversion
>=2.1.300 Libc-Version
>=3.0.100 Gibt an, ob die Ausgabe umgeleitet wurde (TRUE oder FALSE)
>=3.0.100 Bei einem CLI- bzw. SDK-Absturz der Ausnahmetyp und seine Stapelüberwachung (es ist nur CLI- bzw. SDK-Code in der gesendeten Stapelüberwachung enthalten) Weitere Informationen finden Sie unter Telemetrie zu Absturzausnahmen.
>=5.0.100 TargetFrameworkVersion mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.100 RuntimeIdentifier mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.100 „SelfContained“ mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.100 „UseApphost“ mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.100 OutputType mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.201 „PublishReadyToRun“ mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.201 „PublishTrimmed“ mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.201 „PublishSingleFile“ mit Hash für Build (MSBuild-Eigenschaft)
>=5.0.202 Verstrichene Zeit vom Prozessstart bis zur Eingabe der Main-Methode des CLI-Programms, Messung des Host- und Laufzeitstarts
>=5.0.202 Verstrichene Zeit für den Schritt, der dem Pfad bei der ersten Ausführung .NET-Tools hinzufügt
>=5.0.202 Verstrichene Zeit zum Anzeigen des Hinweises der erstmaligen Verwendung bei der ersten Ausführung
>=5.0.202 Verstrichene Zeit zum Generieren des ASP.NET-Zertifikats bei der ersten Ausführung
>=5.0.202 Verstrichene Zeit zum Analysieren der CLI-Eingabe
>=6.0.100 Betriebssystemarchitektur
>=6.0.104 „PublishReadyToRunUseCrossgen2“ mit Hash für Build (MSBuild-Eigenschaft)
>=6.0.104 „Crossgen2PackVersion“ mit Hash für Build (MSBuild-Eigenschaft)
>=6.0.104 „CompileListCount“ mit Hash für Build (MSBuild-Eigenschaft)
>=6.0.104 „_ReadyToRunCompilationFailures“ mit Hash für Build (MSBuild-Eigenschaft)
>=6.0.300 Wenn die CLI aus einer Continuous Integration-Umgebung aufgerufen wurde. Weitere Informationen finden Sie unter Continuous Integration-Erkennung.
>=7.0.100 „PublishAot“ mit Hash für Build (MSBuild-Eigenschaft)
>=7.0.100 „PublishProtocol“ mit Hash für Build (MSBuild-Eigenschaft)

Gesammelte Optionen

Bestimmte Befehle senden zusätzliche Daten. Eine Teilmenge der Befehle sendet das erste Argument:

Befehl Erste Argumentdaten gesendet
dotnet help <arg> Die Hilfe für den Befehl wird abgefragt.
dotnet new <arg> Der Name der Vorlage (gehasht)
dotnet add <arg> Die Wörter package oder reference
dotnet remove <arg> Die Wörter package oder reference
dotnet list <arg> Die Wörter package oder reference
dotnet sln <arg> Die Wörter add, list oder remove
dotnet nuget <arg> Die Wörter delete, locals oder push
dotnet workload <subcommand> <arg> Das Wort install, update, list, search, uninstall, repair, restore und der Workloadname (mit Hash).
dotnet tool <subcommand> <arg> Das Wort install, update, list, search, uninstall, run und der Dotnet-Toolname (mit Hash).

Eine Teilmenge der Befehle sendet die ausgewählten Optionen, wenn diese zusammen mit ihren Werten verwendet werden:

Option Befehle
--verbosity Alle Befehle
--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

Mit Ausnahme von --verbosity und --sdk-package-version werden alle anderen Werte ab dem .NET Core SDK, Version 2.1.100 gehasht.

Telemetrie der Vorlagen-Engine

Der Befehl dotnet new zur Instanziierung von Vorlagen sammelt zusätzliche Daten für die von Microsoft erstellten Vorlagen, beginnend mit dem .NET Core 2.1.100 SDK:

  • --framework
  • --auth

Telemetrie zu Absturzausnahmen

Wenn die .NET-CLI bzw. das SDK abstürzt, sammelt es den Namen der Ausnahme und die Stapelüberwachung des CLI- bzw. SDK-Codes. Diese Informationen werden gesammelt, um Probleme zu bewerten und die Qualität des .NET SDK und der .NET-CLI zu verbessern. Dieser Artikel enthält Informationen zu den von uns erfassten Daten. Außerdem erhalten Sie Tipps dazu, wie Benutzer, die ihre eigene Version des .NET SDK erstellen, die unbeabsichtigte Offenlegung von personenbezogenen und vertraulichen Informationen vermeiden können.

Die .NET CLI erfasst nur Informationen zu CLI- bzw. SDK-Ausnahmen, nicht zu Ausnahmen in Ihrer Anwendung. Die erfassten Daten enthalten den Namen der Ausnahme und die Stapelüberwachung. Diese Stapelüberwachung besteht aus CLI- bzw. SDK-Code.

Im folgenden Beispiel sehen Sie, welche Art von Daten erfasst wird:

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)

Continuous Integration-Erkennung

Um zu erkennen, ob die .NET CLI in einer Continuous Integration-Umgebung ausgeführt wird, überprüft die .NET CLI das Vorhandensein und die Werte mehrerer bekannter Umgebungsvariablen, die von gängigen CI-Anbietern festgelegt werden.

Die vollständige Liste der Umgebungsvariablen und Informationen zur Verwendung ihrer Werte finden Sie unten. Beachten Sie, dass der Wert der Umgebungsvariablen nie erfasst wird, sondern nur zum Festlegen eines booleschen Flags verwendet wird.

Variable(n) Anbieter Aktion
TF_BUILD Azure Pipelines Parsen des booleschen Werts
GITHUB_ACTIONS GitHub Actions Parsen des booleschen Werts
APPVEYOR Appveyor Parsen des booleschen Werts
CI Many/Most Parsen des booleschen Werts
TRAVIS Travis CI Parsen des booleschen Werts
CIRCLECI CircleCI Parsen des booleschen Werts
CODEBUILD_BUILD_ID, AWS_REGION Amazon Web Services CodeBuild Überprüfen, ob alle Variablen vorhanden und ungleich NULL sind
BUILD_ID, BUILD_URL Jenkins Überprüfen, ob alle Variablen vorhanden und ungleich NULL sind
BUILD_ID, PROJECT_ID Google Cloud Build Überprüfen, ob alle Variablen vorhanden und ungleich NULL sind
TEAMCITY_VERSION TeamCity Überprüfen, ob Variablen vorhanden und ungleich NULL sind
JB_SPACE_API_URL JetBrains Space Überprüfen, ob Variablen vorhanden und ungleich NULL sind

Vermeiden der unbeabsichtigten Offenlegung von Informationen

.NET-Mitwirkende und jeder andere, der eine Version des .NET SDK ausführt, die selbst erstellt wurde, sollte den Pfad zum SDK-Quellcode berücksichtigen. Wenn ein Absturz bei der Verwendung eines .NET SDK auftritt, bei dem es sich um einen benutzerdefinierten Debugbuild handelt oder der mit benutzerdefinierten Buildsymboldateien konfiguriert ist, wird der Pfad der SDK-Quelldatei auf dem Buildcomputer als Teil der Stapelüberwachung zwar erfasst, aber nicht gehasht.

Aus diesem Grund sollten benutzerdefinierte Builds des .NET SDK nicht in Verzeichnissen gespeichert werden, deren Pfadnamen persönliche oder vertrauliche Informationen offenlegen.

Siehe auch