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.
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żne
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.
Wszystkie
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
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
Parsowanie wartości logicznej
Ciągła integracja
Wiele/większość
Parsowanie wartości logicznej
TRAVIS
Travis CI
Parsowanie 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 jest obecne i nie jest nullem
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 tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię:
W tym module dowiesz się, jak używać danych telemetrycznych do rejestrowania zachowania aplikacji natywnej dla chmury oraz jak stos aspirujący platformy .NET ułatwia przechowywanie danych i wyświetlanie ich później.
Dowiedz się więcej na temat narzędzi platformy .NET, w tym zestawu SDK i interfejsu wiersza polecenia platformy .NET, diagnostyki i instrumentacji, analizy kodu i weryfikacji pakietów.
Dowiedz się więcej o zestawie .NET SDK (wcześniej znanym jako zestaw SDK platformy .NET Core), który jest zestawem bibliotek i narzędzi używanych do tworzenia projektów platformy .NET.