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) |
>=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 |
--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.