Udostępnij za pośrednictwem


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 Azure Monitor, przechowywanej w ograniczonym dostępie i publikowane w ramach rygorystycznych mechanizmów kontroli zabezpieczeń z bezpiecznych systemów Azure Storage.

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, listlub remove.
dotnet nuget <arg> Wyraz delete, localslub 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ż