Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Scope
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 builddotnet packdotnet 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.
Instalator zestawu .NET SDK wysyła pojedynczy wpis telemetrii po 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 następujących wyników po pierwszym uruchomieniu jednego z poleceń .NET CLI (na przykład dotnet build). Tekst może się nieco 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. Ta zmienna nie ma wpływu na rezygnację z telemetrii.
Uwaga / Notatka
Zmiana powodująca niezgodność: Zmieniło się zachowanie komunikatów telemetrycznych zapisywanych do stderr w najnowszych wersjach pakietu .NET SDK. Aby uzyskać więcej informacji, zobacz dotnet CLI commands log non-command-relevant data to stderr (Polecenia interfejsu wiersza polecenia dotnet logują dane inne niż polecenia dotyczące narzędzia stderr).
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 . Dane są przechowywane w ramach ograniczonego dostępu i publikowane pod ścisłą kontrolą bezpieczeństwa z systemów usługi Azure Storage o podwyższonym poziomie bezpieczeństwa.
Ochrona prywatności jest ważna dla firmy Microsoft. 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 .
Aby uzyskać więcej informacji na temat prywatności i danych osobowych zebranych, zobacz Zasady zachowania poufności informacji firmy Microsoft.
Na poniższych kartach są wyświetlane dane telemetryczne przechwycone przez wersję zestawu SDK:
-
Zestaw SDK w wersji 10.0.100 lub nowszej:
- Zahaszowany identyfikator projektu dla projektu
dotnet run. - Typ aplikacji opartej na plikach lub oparty na projekcie dla programu
dotnet run. - Nazwa profilu uruchamiania, jeśli jest określona dla
dotnet run. - Czy określono profil uruchamiania dla elementu
dotnet run. - Model konfiguracji ustawień uruchamiania używany (jeśli istnieje) dla programu
dotnet run. - Liczba zestawów SDK używanych dla programu
dotnet run. - Liczba PackageReferences dotycząca elementu
dotnet run. - Liczba ProjectReferences dla elementu
dotnet run. - Liczba dodatkowych właściwości aplikacji bazujących na plikach w kontekście
dotnet run. - Czy program MSBuild był używany dla aplikacji opartych na plikach za pomocą polecenia
dotnet run. - Czy kompilator Roslyn był używany dla aplikacji opartych na plikach za pomocą polecenia
dotnet run. - Wykryta nazwa agenta LLM, jeśli interfejs wiersza polecenia został wywołany przez agenta LLM. Aby uzyskać więcej informacji, zobacz Wykrywanie llM.
- Przechwytuje stan
global.jsonw momencie wywołania polecenia. Stan jest jedną z następujących wartości: not_found, prawidłowe, invalid_json lub invalid_data. - Które fabryki zadań MSBuild są używane do ładowania i uruchamiania zadań (w tym wbudowanych zadań C#, zadań wielowątkowych i zadań działających poza procesem), a także ile zadań jest wykonywanych.
- Liczba zadań programu MSBuild wykonanych w taskHosts w porównaniu z zadaniami, które nie są wykonywane w taskHosts.
- Zahaszowany identyfikator projektu dla projektu
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 rundotnet test |
--framework |
dotnet build, , dotnet clean, dotnet publish, dotnet run, , dotnet testdotnet 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ń.
Począwszy od zestawu .NET Core 2.1.100 SDK, zestaw SDK skrótuje wszystkie te wartości z wyjątkiem elementów --verbosity i --sdk-package-version.
Telemetria silnika szablonów
Począwszy od pakietu SDK .NET Core 2.1.100, polecenie instancji szablonu dotnet new zbiera dodatkowe dane dla szablonów opracowanych przez firmę Microsoft.
--framework--auth
dotnet run telemetry
Począwszy od zestawu .NET SDK 10.0.100, dotnet run polecenie zbiera dane telemetryczne oparte na funkcjach, aby ułatwić tworzenie i używanie aplikacji opartych na plikach.
Telemetria dla wszystkich dotnet run wykonań:
- Typ aplikacji (oparty na plikach lub oparty na projekcie)
- Haszowany identyfikator projektu lub pliku
- Liczba używanych zestawów SDK
- Liczba PackageReferences
- Liczba odwołań projektowych
- Sposób użycia profilu uruchomienia (czy
--launch-profilelub--no-launch-profilezostał użyty) - Czy profil uruchamiania jest profilem domyślnym
- Uruchom model ustawień zastosowany, jeśli istnieje
Dane telemetryczne tylko dla aplikacji opartych na plikach:
- Liczba dodatkowych właściwości (na przykład
#:propertydyrektywy) - Czy program MSBuild był używany do kompilowania
- Czy kompilator Roslyn był używany bezpośrednio
Telemetria wyjątku krytycznego
Jeśli CLI lub zestaw SDK platformy .NET ulegnie awarii, zbiera nazwę wyjątku i ślad stosu kodu CLI lub SDK. Interfejs wiersza polecenia platformy .NET zbiera te informacje, aby ocenić problemy i poprawić jakość zestawu .NET SDK i interfejsu wiersza polecenia.
Interfejs wiersza polecenia platformy .NET zbiera informacje dotyczące tylko wyjątków interfejsu wiersza polecenia lub zestawu SDK, a nie wyjątków w aplikacji. Zebrane dane zawierają nazwę wyjątku i ślad stosu. Ten ślad stosu pochodzi z kodu CLI lub 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)
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 nie należy umieszczać niestandardowych kompilacji zestawu .NET SDK w katalogach, których nazwy ścieżek ujawniają informacje osobiste lub poufne.
Ciągłe wykrywanie integracji
Aby wykryć, czy interfejs wiersza polecenia platformy .NET jest uruchomiony w środowisku ciągłej integracji, interfejs wiersza polecenia platformy .NET sprawdza obecność i wartości kilku dobrze znanych zmiennych środowiskowych ustawionych przez typowych dostawców ciągłej integracji.
Na poniższej liście przedstawiono zmienne środowiskowe i sposób, w jaki interfejs wiersza polecenia platformy .NET używa ich wartości. Interfejs wiersza polecenia platformy .NET nie zbiera wartości żadnej zmiennej środowiskowej; używa tylko wartości do ustawienia 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 |
Wiele/większość | Analizowanie wartości logicznej |
TRAVIS |
Ciągła integracja usługi Travis | Analizowanie wartości logicznej |
CIRCLECI |
Okrąg — ciągła integracja | Analizowanie wartości logicznej |
CODEBUILD_BUILD_ID, AWS_REGION |
Amazon Web Services CodeBuild (usługa do budowy i testowania kodu) | 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 |
BUILD_ID, PROJECT_ID |
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 |
Wykrywanie LLM
Aby wykryć, czy interfejs wiersza polecenia platformy .NET jest uruchomiony w kontekście agenta LLM, interfejs wiersza polecenia platformy .NET sprawdza obecność i wartości kilku zmiennych środowiskowych ustawionych przez agentów LLM i asystentów kodowania sztucznej inteligencji.
W poniższej tabeli przedstawiono nazwę agenta, zmienną środowiskową używaną do wykrywania i wartość zgłaszanego typu agenta. Rzeczywiste wartości tych zmiennych środowiskowych nie są zbierane — są używane tylko do identyfikowania typu agenta.
| Agent LLM | Variable | Wartość |
|---|---|---|
| GitHub Copilot | GITHUB_COPILOT_CLI_MODE |
współpilot |
| Claude Code | CLAUDECODE |
Claude |
| Cursor | CURSOR_EDITOR |
kursor |
| Google Gemini | GEMINI_CLI |
"Bliźnięta" |
Jeśli interfejs wiersza polecenia platformy .NET wykryje wielu agentów, łączy różne wartości agenta z przecinkami w celu wygenerowania wartości końcowej.
Zobacz też
- dane telemetryczne interfejsu wiersza poleceń .NET
- źródło referencyjne telemetrii (repozytorium dotnet/sdk)