Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
.NET SDK включает функцию телеметрии, которая собирает данные об использовании и отправляет их в Microsoft при использовании команд .NET CLI. Данные об использовании содержат информацию об исключении в случае сбоя командной строки .NET CLI. Интерфейс командной строки .NET поставляется с пакетом SDK для .NET и представляет собой набор команд, позволяющих создавать, тестировать и публиковать приложения .NET. Данные телеметрии помогают команде .NET понять, как используются средства, чтобы их можно было улучшить. Сведения о сбоях помогают команде устранять проблемы и устранять ошибки.
Собранные данные публикуются в совокупном виде под лицензией Creative Commons Attribution License. Некоторые собранные данные публикуются на .NET CLI данные телеметрии.
Размах
dotnet имеет две функции: запускать приложения и выполнять команды CLI. Данные телеметрии не собираются при использовании dotnet для запуска приложения в следующем формате:
dotnet [path-to-app].dll
Данные телеметрии собираются при использовании одной из команд .NET CLI, например:
dotnet builddotnet packdotnet run
Как отказаться
Функция телеметрии пакета SDK для .NET включена по умолчанию для дистрибутивов Пакета SDK майкрософт. Чтобы отказаться от функции телеметрии, задайте для переменной среды DOTNET_CLI_TELEMETRY_OPTOUT значение 1 или true.
Установщик пакета SDK для .NET отправляет одну запись телеметрии при успешной установке. Чтобы отказаться, задайте переменную среды DOTNET_CLI_TELEMETRY_OPTOUT перед установкой пакета SDK для .NET.
Важный
Чтобы отказаться от установки: закройте установщик, задайте переменную среды, а затем снова запустите установщик с этим набором значений.
Раскрытие
Пакет SDK для .NET отображает текст, аналогичный следующим выходным данным при первом выполнении одной из команд .NET CLI (например, dotnet build). Текст может немного отличаться в зависимости от версии запущенного пакета SDK. Этот «опыт первого запуска» — способ, которым компания Майкрософт уведомляет вас о сборе данных.
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
Чтобы отключить это сообщение и приветственное сообщение .NET, задайте для переменной среды DOTNET_NOLOGO значение true. Эта переменная не влияет на отказ от телеметрии.
Замечание
Критическое изменение: Поведение телеметрических сообщений, записываемых в stderr, изменилось в последних версиях SDK для .NET. Дополнительные сведения см. в материале команды dotnet CLI фиксируют данные, не относящиеся к команде, в stderr.
Точки данных
Функция телеметрии не собирает персональные данные, такие как имена пользователей или адреса электронной почты. Он не сканирует код и не извлекает данные уровня проекта, такие как имя, репозиторий или автор. Он не извлекает содержимое файлов данных, к которым обращаются или создаются приложениями, дампы любой памяти, занятой объектами ваших приложений, или содержимое буфера обмена. Данные отправляются безопасно на серверы Майкрософт с помощью технологии Azure Monitor . Данные хранятся в защищенных системах Azure Storage под ограниченным доступом и публикуются при строгих мерах безопасности.
Защита конфиденциальности важна для Майкрософт. Если вы подозреваете, что данные телеметрии собирают конфиденциальные данные или данные небезопасно обрабатываются, отправьте проблему в репозитории dotnet/sdk .
Дополнительные сведения о конфиденциальности и собранных персональных данных см. в заявлении о конфиденциальности Майкрософт.
На следующих вкладках показаны данные телеметрии, захваченные версией пакета SDK:
-
Пакет SDK версии 10.0.100 и более поздних версий:
- Хешированный идентификатор проекта для
dotnet run. - Тип приложения: файловое или проектное для
dotnet run. - Имя профиля запуска, если он указан для
dotnet run. - Указан ли профиль запуска для
dotnet run. - Модель конфигурации параметров запуска, которая используется (если используется) для
dotnet run. - Количество пакетов SDK, используемых для
dotnet run. - Количество PackageReferences для
dotnet run. - Число ссылок ProjectReferences для
dotnet run. - Количество дополнительных свойств для приложений на основе файлов с
dotnet run. - Использовался ли MSBuild для файловых приложений.
dotnet run - Использовался ли компилятор Roslyn для приложений, работающих с файлами с
dotnet run. - Обнаруженное имя агента LLM, если интерфейс командной строки был вызван агентом LLM. Дополнительные сведения см. в разделе "Обнаружение LLM".
-
global.jsonЗаписывает состояние во время вызова команды. Состояние является одним из следующих значений: not_found, valid, invalid_json или invalid_data. - Какие фабрики задач MSBuild используются для загрузки и выполнения задач (включая встроенные задачи C#, многопоточные и внепроцессные задачи), а также количество выполняемых ими задач.
- Количество задач MSBuild, выполняемых в TaskHosts и задачах, не выполняемых в TaskHosts.
- Хешированный идентификатор проекта для
Собранные параметры
Некоторые команды отправляют дополнительные данные. Подмножество команд отправляет первый аргумент:
| Команда | Данные первого аргумента, отправленные |
|---|---|
dotnet help <arg> |
Запрашивается справочная информация по команде. |
dotnet new <arg> |
Имя шаблона (хэшировано). |
dotnet add <arg> |
Слово package или reference. |
dotnet remove <arg> |
Слово package или reference. |
dotnet list <arg> |
Слово package или reference. |
dotnet sln <arg> |
Слово add, listили remove. |
dotnet nuget <arg> |
Слово delete, localsили push. |
dotnet workload <subcommand> <arg> |
Слово install, update, list, search, uninstall, repair, restore и имя нагрузки в хешированном виде. |
dotnet tool <subcommand> <arg> |
Слово install, update, list, search, uninstall, run и имя инструмента dotnet (хэшировано). |
Подмножество команд отправляет выбранные параметры, если они используются, а также их значения:
| Выбор | Команды |
|---|---|
--verbosity |
Все команды |
--language |
dotnet new |
--configuration |
dotnet build, , dotnet cleandotnet publish, dotnet rundotnet test |
--framework |
dotnet build, , dotnet cleandotnet publishdotnet rundotnet test,dotnet vstest |
--runtime |
dotnet build, dotnet publish |
--platform |
dotnet vstest |
--logger |
dotnet vstest |
--sdk-package-version |
dotnet migrate |
Если SDK не может разрешить встроенную команду, любой резолвер команд, который успешно разрешает команду, отправляет хэш имени команды вместе с именем типа резолвера команд.
Начиная с пакета SDK для .NET Core 2.1.100, пакет SDK хэширует все эти значения, кроме --verbosity и --sdk-package-version.
Телеметрия обработчика шаблонов
Начиная с пакета SDK для .NET Core 2.1.100 команда dotnet new создания шаблона собирает дополнительные данные для шаблонов, созданных Корпорацией Майкрософт:
--framework--auth
Dotnet run telemetry
Начиная с .NET SDK 10.0.100, команда dotnet run собирает телеметрию функциональности, чтобы содействовать разработке и использованию приложений, работающих с файлами.
Данные телеметрии для всех dotnet run выполнений:
- Тип приложения (на основе файлов или на основе проекта)
- Хэшируемый проект или идентификатор файла
- Количество используемых пакетов SDK
- Количество PackageReferences
- Число ссылок ProjectReferences
- Использование профиля при запуске (независимо от того, использовался ли
--launch-profileили--no-launch-profile) - Указывает, является ли профиль запуска профилем по умолчанию
- Применена модель параметров запуска( если она есть)
Данные телеметрии только для приложений на основе файлов:
- Количество дополнительных свойств (например,
#:propertyдирективы) - Использовался ли MSBuild для сборки?
- Используется ли компилятор Roslyn напрямую
Данные телеметрии исключений аварийного сбоя
Если интерфейс командной строки или пакет SDK для .NET завершается сбоем, он собирает имя исключения и трассировку стека кода CLI или SDK. Интерфейс командной строки .NET собирает эти сведения для оценки проблем и улучшения качества пакета SDK для .NET и CLI.
Интерфейс командной строки .NET CLI собирает сведения только для исключений CLI или пакета SDK, а не исключений в приложении. Собранные данные содержат имя исключения и трассировку стека. Эта трассировка стека относится к коду CLI или SDK.
В следующем примере показан тип собранных данных:
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)
Участники .NET и другие пользователи, работающие с версией пакета SDK для .NET, которые они создали сами, должны рассмотреть путь к исходному коду пакета SDK. Если происходит сбой при использовании пакета SDK для .NET, который является пользовательской сборкой отладки или настроен с помощью пользовательских файлов символов сборки, путь к исходному файлу пакета SDK с компьютера сборки собирается в рамках трассировки стека и не хэшируется.
Из-за этого не следует размещать пользовательские сборки пакета SDK для .NET в каталогах, имена путей которых предоставляют личную или конфиденциальную информацию.
Обнаружение непрерывной интеграции
Чтобы определить, работает ли .NET CLI в среде непрерывной интеграции, интерфейс командной строки .NET проверяет наличие и значения нескольких известных переменных среды, которые задают общие поставщики CI.
В следующем списке показаны переменные среды и использование .NET CLI их значений. Интерфейс командной строки .NET не собирает значение любой переменной среды; Он использует только значение для задания логического флага.
| Переменные | Поставщик | Действие |
|---|---|---|
TF_BUILD |
Azure Pipelines (система конвейеров Azure) | Разобрать логическое значение |
GITHUB_ACTIONS |
Действия GitHub | Разобрать логическое значение |
APPVEYOR |
Appveyor | Разобрать логическое значение |
CI |
Многие или большинство | Разобрать логическое значение |
TRAVIS |
Трэвис CI | Разобрать логическое значение |
CIRCLECI |
Кольцевая CI | Разобрать логическое значение |
CODEBUILD_BUILD_ID, AWS_REGION |
Amazon Web Services CodeBuild (сервис для автоматизации сборки и тестирования) | Проверьте, что все значения присутствуют и не равны NULL. |
BUILD_ID, BUILD_URL |
Дженкинс | Проверьте, что все значения присутствуют и не равны NULL. |
BUILD_ID, PROJECT_ID |
Google Cloud Build | Проверьте, что все значения присутствуют и не равны NULL. |
TEAMCITY_VERSION |
TeamCity | Проверка наличия и ненулевого значения |
JB_SPACE_API_URL |
Пространство JetBrains | Проверка наличия и ненулевого значения |
Обнаружение LLM
Чтобы определить, выполняется ли интерфейс командной строки .NET в контексте агента LLM, интерфейс командной строки .NET проверяет наличие и значения нескольких переменных среды, заданных агентами LLM и помощниками по программированию ИИ.
В следующей таблице показаны имя агента, переменная среды, используемая для обнаружения, и значение указанного типа агента. Фактические значения этих переменных среды не собираются— они используются только для идентификации типа агента.
| Агент LLM | Variable | Ценность |
|---|---|---|
| GitHub Copilot | GITHUB_COPILOT_CLI_MODE |
Копилот-система |
| Код Клода | CLAUDECODE |
Клод |
| Cursor | CURSOR_EDITOR |
курсор |
| Google Gemini | GEMINI_CLI |
"близнецы" |
Если интерфейс командной строки .NET обнаруживает несколько агентов, он объединяет различные значения агента с запятой для создания окончательного значения.