Telemetria zestawu .NET SDK i CLI platformy .NET
Zestaw SDK platformy .NET zawiera funkcję telemetrii, która zbiera dane użycia i wysyła je do firmy Microsoft podczas korzystania z poleceń interfejsu wiersza polecenia platformy .NET. Dane użycia zawierają informacje o wyjątkach, gdy dojdzie do awarii .NET CLI. Narzędzie CLI platformy .NET jest dostarczane z zestawem .NET SDK i zawiera zestaw poleceń, które umożliwiają tworzenie, testowanie i publikowanie aplikacji platformy .NET. Dane telemetryczne pomagają zespołowi platformy .NET zrozumieć, jak są używane narzędzia, aby można je było ulepszyć. Informacje na temat niepowodzeń ułatwiają zespołowi rozwiązywanie problemów i naprawianie usterek.
Zebrane dane są publikowane w ramach licencji Creative Commons Attribution License. Niektóre zebrane dane są publikowane w dane telemetryczne interfejsu wiersza polecenia platformy .NET.
Zakres
dotnet
ma dwie funkcje: uruchamianie aplikacji i wykonywanie poleceń interfejsu wiersza polecenia. Dane telemetryczne nie są zbierane podczas korzystania z dotnet
w celu uruchomienia aplikacji w następującym formacie:
dotnet [path-to-app].dll
Dane telemetryczne są zbierane podczas korzystania z dowolnego z poleceń interfejsu wiersza polecenia platformy .NET platformy .NET, takich jak:
dotnet build
dotnet pack
dotnet run
Jak zrezygnować
Funkcja telemetrii zestawu .NET SDK jest domyślnie włączona dla dystrybucji zestawu SDK firmy Microsoft. Aby zrezygnować z funkcji telemetrii, ustaw zmienną środowiskową DOTNET_CLI_TELEMETRY_OPTOUT
na 1
lub true
.
Pojedyncze zapisy telemetrii są również wysyłane przez instalatora zestawu SDK platformy .NET, gdy dochodzi do pomyślnej instalacji. Aby zrezygnować, przed zainstalowaniem zestawu SDK platformy .NET ustaw zmienną środowiskową DOTNET_CLI_TELEMETRY_OPTOUT
.
Ważny
Aby zrezygnować po uruchomieniu instalatora: zamknij instalatora, ustaw zmienną środowiskową, a następnie uruchom instalatora ponownie z tym zestawem wartości.
Ujawnienie
Zestaw .NET SDK wyświetla tekst podobny do poniższego przy pierwszym uruchomieniu jednego z poleceń .NET CLI (na przykład dotnet build
). Tekst może się nieznacznie różnić w zależności od używanej wersji zestawu SDK. Doświadczenie "pierwszego uruchomienia" służy do powiadamiania Cię przez Microsoft o zbieraniu danych.
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
Aby wyłączyć ten komunikat i komunikat powitalny platformy .NET, ustaw zmienną środowiskową DOTNET_NOLOGO
na true
. Należy pamiętać, że ta zmienna nie ma wpływu na rezygnację z telemetrii.
Punkty danych
Funkcja telemetrii nie zbiera danych osobowych, takich jak nazwy użytkowników lub adresy e-mail. Nie skanuje ono kodu i nie wyodrębnia danych na poziomie projektu, takich jak nazwa, repozytorium lub autor. Nie wyodrębnia zawartości plików danych, do których uzyskują dostęp lub które są tworzone przez aplikacje, zrzutów pamięci zajmowanej przez obiekty aplikacji ani zawartości schowka. Dane są bezpiecznie wysyłane do serwerów firmy Microsoft przy użyciu technologii
Ochrona prywatności jest dla nas ważna. Jeśli podejrzewasz, że dane telemetryczne zbierają poufne dane lub dane są niezabezpieczone lub niewłaściwie obsługiwane, zgłoś problem w repozytorium dotnet/sdk lub wyślij wiadomość e-mail do dotnet@microsoft.com w celu zbadania.
Funkcja telemetrii zbiera następujące dane:
Wersje zestawu SDK | Dane |
---|---|
Wszystko | Sygnatura czasowa wywołania. |
Wszystko | Wywołano polecenie (na przykład "build"), haszowane począwszy od wersji 2.1. |
Wszystko | Trzy oktetowe adresy IP używane do określania lokalizacji geograficznej. |
Wszystko | System operacyjny i wersja. |
Wszystko | Identyfikator środowiska uruchomieniowego (RID), na którym działa zestaw SDK. |
Wszystko | Wersja zestawu .NET SDK. |
Wszystko | Profil telemetrii: opcjonalna wartość używana tylko z jawnym wyrażeniem zgody użytkownika i używana wewnętrznie w firmie Microsoft. |
>=2.0 | Argumenty poleceń i opcje: zbierane są kilka argumentów i opcji (nie dowolnych ciągów). Zobacz zebrane opcje. Haszowanie po wersji 2.1.300. |
>=2.0 | Czy zestaw SDK jest uruchomiony w kontenerze. |
>=2.0 | Platformy docelowe (z wydarzenia TargetFramework ), hashowane począwszy od wersji 2.1. |
>=2.0 | Adres skrótowy Media Access Control (MAC) (SHA256). |
>=2.0 | Przehaszowany bieżący katalog roboczy. |
>=2.0 | Raport o pomyślnej instalacji, ze skrótem nazwy pliku exe instalatora. |
>=2.1.300 | Wersja jądra. |
>=2.1.300 | Wersja lub wydanie biblioteki Libc. |
>=3.0.100 | Czy dane wyjściowe zostały przekierowane (prawda czy fałsz). |
>=3.0.100 | W przypadku awarii interfejsu CLI lub SDK, typ wyjątku i jego ślad stosu (zawierający tylko kod interfejsu CLI lub SDK). Aby uzyskać więcej informacji, zobacz Telemetria awarii z wyjątkiem. |
>=5.0.100 | Haszowana TargetFrameworkVersion używana do kompilacji (właściwość MSBuild) |
>=5.0.100 | Hashed RuntimeIdentifier używany do kompilacji (właściwość MSBuild) |
>=5.0.100 | Hashed SelfContained używany do kompilacji (właściwość MSBuild) |
>=5.0.100 | Skrót UseApphost używany do kompilacji (właściwość MSBuild) |
>=5.0.100 | Skrót outputType używany do kompilacji (właściwość MSBuild) |
>=5.0.201 | Funkcja Hashed PublishReadyToRun używana do kompilacji (właściwość MSBuild) |
>=5.0.201 | Haszowany PublishTrimmed stosowany w kompilacji (właściwość MSBuild) |
>=5.0.201 | Hashed PublishSingleFile używany do kompilacji (właściwość MSBuild) |
>=5.0.202 | Upłynął czas od rozpoczęcia procesu do momentu wejścia do głównej metody programu CLI, mierzenia czasu uruchamiania hosta i środowiska uruchomieniowego. |
>=5.0.202 | Czas wykonania kroku, który dodaje narzędzia .NET Tools do ścieżki podczas pierwszego uruchomienia. |
>=5.0.202 | Upłynął czas wyświetlania powiadomienia o pierwszym użyciu podczas pierwszego uruchomienia. |
>=5.0.202 | Upłynął czas generowania certyfikatu ASP.NET podczas pierwszego uruchomienia. |
>=5.0.202 | Czas potrzebny na analizę danych wejściowych interfejsu wiersza polecenia. |
>=6.0.100 | Architektura systemu operacyjnego |
>=6.0.104 | Funkcja Hashed PublishReadyToRunUseCrossgen2 używana do kompilacji (właściwość MSBuild) |
>=6.0.104 | Skrót Crossgen2PackVersion używany do kompilacji (właściwość MSBuild) |
>=6.0.104 | Hashed CompileListCount używany do kompilacji (właściwość MSBuild) |
>=6.0.104 | Skrót _ReadyToRunCompilationFailures używany do kompilacji (właściwość MSBuild) |
>=6.0.300 | Jeśli interfejs wiersza polecenia został wywołany ze środowiska ciągłej integracji. Aby uzyskać więcej informacji, zobacz wykrywanie ciągłej integracji. |
>=7.0.100 | Funkcja Hashed PublishAot używana do kompilacji (właściwość MSBuild) |
>=7.0.100 | Hashed PublishProtocol używany do kompilacji (właściwość MSBuild) |
>=8.0.100 | Hashed TargetPlatformIdentifier używany do kompilacji (właściwość MSBuild) |
>=8.0.100 | Hashed HybridGlobalization użyty do kompilacji (właściwość MSBuild) |
>=8.0.100 | Czy jest używany zestaw .NET Blazor WebAssembly SDK. |
>=8.0.100 | Określa, czy jest używany zestaw .NET WebAssembly SDK. |
>=8.0.100 | Czy jest używany program .NET MAUI. |
>=8.0.100 | Określa, czy jest używany zestaw SDK dla urządzeń przenośnych platformy .NET. |
>=8.0.100 | Czy są używane inne zestawy SDK dla urządzeń przenośnych (na przykład: Avalonia, Uno). |
>=8.0.100 | Czy jest używana funkcja Mono AOT. |
>=8.0.100 | Czy funkcja Mono AOT strip IL jest używana? |
>=8.0.100 | Czy jest używany interpreter Mono. |
>=8.0.100 | Określa, czy jest używany tryb biblioteki dla urządzeń przenośnych. |
>=8.0.100 | Czy jest używana funkcja NativeAOT. |
>=8.0.100 | Używana wersja pakietu środowiska uruchomieniowego Mono. |
Zebrane opcje
Niektóre polecenia wysyłają dodatkowe dane. Podzestaw poleceń wysyła pierwszy argument:
Polecenie | Wysłane pierwsze dane argumentu |
---|---|
dotnet help <arg> |
Pomoc polecenia jest odpytywana. |
dotnet new <arg> |
Nazwa szablonu (zahashowana). |
dotnet add <arg> |
Wyraz package lub reference . |
dotnet remove <arg> |
Wyraz package lub reference . |
dotnet list <arg> |
Wyraz package lub reference . |
dotnet sln <arg> |
Wyraz add , list lub remove . |
dotnet nuget <arg> |
Wyraz delete , locals lub push . |
dotnet workload <subcommand> <arg> |
Wyrazy install , update , list , search , uninstall , repair , restore i nazwa obciążenia (skrót). |
dotnet tool <subcommand> <arg> |
Wyraz install , update , list , search , uninstall , run oraz nazwę narzędzia dotnet (zaszyfrowana). |
Podzestaw poleceń wysyła wybrane opcje, jeśli są używane, wraz z ich wartościami:
Opcja | Polecenia |
---|---|
--verbosity |
Wszystkie polecenia |
--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 |
Gdy zestaw SDK nie może rozpoznać wbudowanego polecenia, dowolny program rozpoznawania poleceń, który pomyślnie rozpozna polecenie, wysyła skrót nazwy polecenia wraz z nazwą typu rozpoznawania poleceń.
Z wyjątkiem --verbosity
i --sdk-package-version
, wszystkie pozostałe wartości są zahaszowane, zaczynając od zestawu SDK .NET Core w wersji 2.1.100.
Telemetria silnika szablonów
Polecenie tworzenia wystąpienia szablonu dotnet new
zbiera dodatkowe dane dla szablonów utworzonych przez firmę Microsoft, począwszy od zestawu .NET Core 2.1.100 SDK:
--framework
--auth
Telemetria wyjątku krytycznego
Jeśli platforma .NET CLI/SDK ulegnie awarii, zbiera nazwę wyjątku i ślad stosu kodu. Te informacje są zbierane w celu oceny problemów i poprawy jakości zestawu .NET SDK i interfejsu wiersza polecenia. Ten artykuł zawiera informacje o zbieranych danych. Zawiera również porady dotyczące sposobu, w jaki użytkownicy tworzący własną wersję zestawu .NET SDK mogą uniknąć nieumyślnego ujawnienia informacji osobistych lub poufnych.
Interfejs wiersza polecenia platformy .NET zbiera informacje tylko dla wyjątków interfejsu wiersza polecenia/zestawu SDK, a nie wyjątków w aplikacji. Zebrane dane zawierają nazwę wyjątku i ślad stosu. Ten ślad stosu dotyczy kodu CLI/SDK.
W poniższym przykładzie przedstawiono rodzaj zebranych danych:
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)
Wykrywanie ciągłej integracji
Aby wykryć, czy CLI .NET działa w środowisku ciągłej integracji, CLI .NET sprawdza obecność i wartości kilku dobrze znanych zmiennych środowiskowych ustawianych przez typowych dostawców CI.
Poniżej przedstawiono pełną listę zmiennych środowiskowych i czynności wykonywanych z ich wartościami. Należy pamiętać, że w każdym przypadku wartość zmiennej środowiskowej nigdy nie jest zbierana, używana tylko do ustawiania flagi logicznej.
Zmienne | Dostawca | Akcja |
---|---|---|
TF_BUILD | Azure Pipelines | Analizowanie wartości logicznej |
GITHUB_ACTIONS | GitHub Actions | Analizowanie wartości logicznej |
APPVEYOR | Appveyor | Analizowanie wartości logicznej |
Ciągła integracja | Wiele/większość | Analizowanie wartości logicznej |
TRAVIS | Travis CI | Analizowanie wartości logicznej |
CIRCLECI | Circle CI | Analizowanie wartości logicznej |
CODEBUILD_BUILD_ID, AWS_REGION | Amazon Web Services CodeBuild | Sprawdź, czy wszystkie są obecne i nie mają wartości null |
BUILD_ID, BUILD_URL | Jenkins | Sprawdź, czy wszystkie są obecne i nie mają wartości null |
ID_BUDOWY, ID_PROJEKTU | Google Cloud Build | Sprawdź, czy wszystkie są obecne i nie mają wartości null |
TEAMCITY_VERSION | TeamCity | Sprawdź, czy istnieje i nie jest puste |
JB_SPACE_API_URL | Przestrzeń JetBrains | Sprawdź, czy istnieje i nie jest puste |
Unikaj nieumyślnego ujawniania informacji
Współautorzy platformy .NET i wszyscy inni, którzy uruchamiają wersję zestawu .NET SDK, którą utworzyli, powinni rozważyć ścieżkę do kodu źródłowego zestawu SDK. Jeśli wystąpi awaria podczas korzystania z pakietu .NET SDK będącego niestandardową kompilacją debugowania lub skonfigurowanego z niestandardowymi plikami symboli, ścieżka pliku źródłowego SDK z kompilującej maszyny jest zbierana jako część śledzenia stosu i nie jest haszowana.
W związku z tym niestandardowe kompilacje zestawu .NET SDK nie powinny znajdować się w katalogach, których nazwy ścieżek ujawniają informacje osobiste lub poufne.
Zobacz też
- dane telemetryczne interfejsu wiersza poleceń .NET
- źródło referencyjne telemetrii (repozytorium dotnet/sdk)