.NET SDK und .NET CLI-Telemetrie
Das .NET SDK- enthält ein Telemetriefeature, das Nutzungsdaten sammelt und an Microsoft sendet, wenn Sie .NET CLI--Befehle verwenden. Die Verwendungsdaten enthalten Ausnahmeinformationen, wenn die .NET CLI abstürzt. Die .NET CLI enthält das .NET SDK und ist der Satz von Verben, mit denen Sie Ihre .NET-Apps erstellen, testen und veröffentlichen können. Telemetriedaten helfen dem .NET-Team zu verstehen, wie die Tools verwendet werden, damit sie verbessert werden können. Informationen zu Fehlern helfen dem Team, Probleme zu beheben und Fehler zu korrigieren.
Die gesammelten Daten werden im Aggregat unter der Creative Commons Attribution Licenseveröffentlicht. Einige der gesammelten Daten werden unter .NET CLI-Telemetriedaten veröffentlicht.
Bereich
dotnet
verfügt über zwei Funktionen: Zum Ausführen von Apps und zum 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
So melden Sie sich ab
Das .NET SDK-Telemetriefeature ist standardmäßig für Microsoft-Distributionen des SDK aktiviert. Um die Telemetriefunktion zu deaktivieren, legen Sie die umgebungsvariable DOTNET_CLI_TELEMETRY_OPTOUT
auf 1
oder true
fest.
Ein einzelner Telemetrieeintrag wird auch vom .NET SDK-Installationsprogramm gesendet, wenn eine erfolgreiche Installation erfolgt. Um dies zu deaktivieren, legen Sie die DOTNET_CLI_TELEMETRY_OPTOUT
Umgebungsvariable fest, bevor Sie das .NET SDK installieren.
Wichtig
Wenn Sie sich abmelden 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 erneut mit diesem Wertsatz aus.
Enthüllung
Das .NET SDK zeigt einen Text an, der dem folgenden ähnelt, wenn Sie zum ersten Mal einen der .NET CLI-Befehle (z. B. dotnet build
) ausführen. Text kann geringfügig variieren, je nachdem, welche Version des SDK Sie ausführen. Ü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
Um diese Nachricht und die .NET-Willkommensnachricht zu deaktivieren, legen Sie die DOTNET_NOLOGO
Umgebungsvariable auf true
fest. Beachten Sie, dass diese Variable keine Auswirkungen auf die Telemetrie-Abmeldung hat.
Datenpunkte
Das Telemetriefeature sammelt keine personenbezogenen Daten, z. B. Benutzernamen oder E-Mail-Adressen. Ihr Code wird nicht gescannt und es werden keine Projektdaten auf der Ebene des Projekts extrahiert, wie Name, Repository oder 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 sicher an Microsoft-Server mit Azure Monitor Technologie gesendet, unter eingeschränktem Zugriff gehalten und unter strengen Sicherheitskontrollen von sicheren Azure Storage-Systemen veröffentlicht.
Der Schutz Ihrer Privatsphäre ist uns wichtig. Wenn Sie vermuten, dass die Telemetrie vertrauliche Daten sammelt oder die Daten unsicher oder unangemessen behandelt werden, erstellen Sie ein Problem im dotnet/sdk Repository oder kontaktieren Sie dotnet@microsoft.com per E-Mail zur weiteren Untersuchung.
Das Telemetriefeature sammelt die folgenden Daten:
SDK-Versionen | Daten |
---|---|
Alle | Den Zeitstempel des Aufrufs |
Alle | Den aufgerufenen Befehl (zum Beispiel „build“), ab Version 2.1 gehasht |
Alle | Drei-Oktett-IP-Adresse, die verwendet wird, um den geografischen Standort zu bestimmen. |
Alle | Betriebssystem und Version. |
Alle | Die Runtime-ID (RID), auf der das SDK ausgeführt wird |
Alle | .NET SDK-Version. |
Alle | Telemetrieprofil: Ein optionaler Wert, der nur mit ausdrücklicher Zustimmung des Benutzers genutzt und intern bei Microsoft verwendet wird. |
>=2.0 | Befehlsargumente und -optionen: Mehrere Argumente und Optionen werden gesammelt (keine beliebigen Zeichenfolgen). Weitere Informationen finden Sie unter Gesammelte Optionen. Ab Version 2.1.300 gehasht |
>=2.0 | Gibt an, 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 (wahr oder falsch). |
>=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 | Ob andere mobile SDKs verwendet werden (wie: Avalonia, Uno). |
>=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-Dolmetscher 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 von Befehlen 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 von Befehlen sendet ausgewählte Optionen, wenn sie verwendet werden, zusammen mit ihren Werten:
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 |
Wenn das SDK einen integrierten Befehl nicht auflösen kann, sendet jeder Befehlslöser, der den Befehl erfolgreich aufgelöst hat, einen Hash des Befehlsnamens zusammen mit dem Namen des Befehlslösertyps.
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 CLI zu verbessern. Dieser Artikel enthält Informationen zu den von uns erfassten Daten. Außerdem finden Sie Tipps dazu, wie Benutzer, die eine eigene Version des .NET SDK erstellen, die versehentliche Offenlegung von persönlichen oder vertraulichen Informationen vermeiden können.
Die .NET CLI sammelt nur Informationen für CLI/SDK-Ausnahmen, nicht 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.
Das folgende Beispiel zeigt die Art der gesammelten Daten:
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 kontinuierlichen Integrationsumgebung 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 was mit deren Werten gemacht wird, wird unten angezeigt. 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-Aktionen | 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 |
Versehentliche Offenlegung von Informationen vermeiden
.NET-Mitwirkende und andere Personen, die eine Version des .NET SDK ausführen, die sie selbst erstellt haben, sollten den Pfad zu ihrem 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 Fall sollten sich benutzerdefinierte Builds des .NET SDK nicht in Verzeichnissen befinden, deren Pfadnamen persönliche oder vertrauliche Informationen verfügbar machen.