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.
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)
>=8.0.100
TargetPlatformIdentifier mit Hash für Build (MSBuild-Eigenschaft)
>=8.0.100
HybridGlobalization mit Hash für Build (MSBuild-Eigenschaft)
>=8.0.100
Gibt an, ob .NET Blazor WebAssembly SDK verwendet wird.
>=8.0.100
Gibt an, ob .NET WebAssembly SDK verwendet wird.
>=8.0.100
Gibt an, ob .NET MAUI verwendet wird.
>=8.0.100
Gibt an, ob .NET Mobile SDK verwendet wird.
>=8.0.100
Gibt an, ob andere mobile SDKs (wie: Avalonia, Uno) verwendet werden.
>=8.0.100
Gibt an, ob Mono AOT verwendet wird.
>=8.0.100
Gibt an, ob das Mono AOT Strip IL-Feature verwendet wird.
>=8.0.100
Gibt an, ob Mono Interpreter verwendet wird.
>=8.0.100
Gibt an, ob der Bibliotheksmodus für mobile Geräte verwendet wird.
>=8.0.100
Gibt an, ob NativeAOT verwendet wird.
>=8.0.100
Verwendete Mono-Laufzeitpaketversion.
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
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.
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
In diesem Modul erfahren Sie, wie Sie Telemetrie verwenden, um das Verhalten einer cloudnativen Anwendung aufzuzeichnen und zu erfahren, wie der .NET Aspire-Stapel das Speichern und spätere Anzeigen von Daten erleichtert.