Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
.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.
Точки данных
За исключением классификации использования сотрудников Microsoft данные телеметрии не собирают персональные данные, такие как имена пользователей или адреса электронной почты. Для положительной классификации вне конвейеров непрерывной интеграции (CI) телеметрия может сообщать нормализованный локальный псевдоним учетной записи сотрудника Microsoft и корпоративный домен. Не указывается полный адрес электронной почты. Он не сканирует код и не извлекает данные уровня проекта, такие как имя, репозиторий или автор. Он не извлекает содержимое файлов данных, к которым обращаются или создаются приложениями, дампы любой памяти, занятой объектами ваших приложений, или содержимое буфера обмена. Данные отправляются безопасно на серверы Майкрософт с помощью технологии Azure Monitor . Данные хранятся в защищенных системах служба хранилища Azure под ограниченным доступом и публикуются при строгих мерах безопасности.
Защита конфиденциальности важна для Майкрософт. Если вы подозреваете, что данные телеметрии собирают конфиденциальные данные или данные небезопасно обрабатываются, отправьте проблему в репозитории dotnet/sdk .
Дополнительные сведения о конфиденциальности и собранных персональных данных см. в заявлении о конфиденциальности Майкрософт.
На следующих вкладках показаны данные телеметрии, захваченные версией пакета SDK:
SDK версии 11.0.200 и более поздних версий:
- Интерфейс командной строки определяет, является ли текущий пользователь сотрудником Microsoft. Дополнительные сведения см. в классификации использования сотрудниками Microsoft.
Пакет SDK версии 11.0.100 и более поздних версий:
- Данные телеметрии кэша выходных данных компилятора Roslyn:
- Нашёл ли компилятор и восстановил ли кэшированный результат компиляции.
- Результат попытки сохранить компиляцию в кэше.
- Язык компилятора (C# или Visual Basic).
- Время, затраченное на вычисление ключа кэша, восстановление кэшированного результата, сохранение результата, а также компиляцию и генерацию при промахе кэша.
- Данные телеметрии кэша выходных данных компилятора Roslyn:
классификация использования сотрудниками Microsoft
Начиная с пакета SDK .NET 11.0.200, интерфейс командной строки обнаруживает признаки того, что текущий пользователь является сотрудником Microsoft. Эта классификация измеряет использование сотрудниками Microsoft интерфейса командной строки .NET. Использование Microsoft продуктов не приводит к положительной классификации.
| Тег | Данные |
|---|---|
dotnet.cli.is_microsoft_internal |
Обнаружены ли признаки того, что текущий пользователь является сотрудником Microsoft. |
dotnet.cli.microsoft_internal_source |
Источник, который обнаружил доказательства наличия сотрудника Microsoft. Сообщается только для положительного результата. |
dotnet.cli.microsoft_internal_alias |
Нормализованный псевдоним учетной записи сотрудника Microsoft. Указывается только для положительного результата за пределами CI. |
dotnet.cli.microsoft_internal_domain |
Нормализованный корпоративный домен. Отображается только для положительного результата за пределами CI. |
За пределами CI интерфейс командной строки может использовать существующие учетные данные GitHub для запроса, принадлежит ли учетная запись организации Microsoft. Интерфейс командной строки отправляет учетные данные только в API GitHub для этой проверки. Интерфейс командной строки никогда не кэширует учетные данные или добавляет их в данные телеметрии. Логины GitHub не используются в качестве псевдонимов телеметрии.
Интерфейс командной строки не выполняет проверки идентификации GitHub в CI. CLI также подавляет псевдонимы и значения домена в CI.
Собранные параметры
Некоторые команды отправляют дополнительные данные. Подмножество команд отправляет первый аргумент:
| Команда | Данные первого аргумента, отправленные |
|---|---|
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 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 |
Если 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 |
CircleCI | Разобрать логическое значение |
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 Space | Проверка наличия и ненулевого значения |
Обнаружение LLM
Чтобы определить, выполняется ли интерфейс командной строки .NET в контексте агента LLM, интерфейс командной строки .NET проверяет наличие и значения нескольких переменных среды, заданных агентами LLM и помощниками по программированию ИИ.
В следующей таблице показаны имя агента, переменная среды, используемая для обнаружения, и значение указанного типа агента. Фактические значения этих переменных среды не собираются— они используются только для идентификации типа агента.
| Агент LLM | Variable | Ценность |
|---|---|---|
| GitHub Copilot | GITHUB_COPILOT_CLI_MODE |
Копилот-система |
| Код Клода | CLAUDECODE |
Клод |
| Cursor | CURSOR_EDITOR |
курсор |
| Google Gemini | GEMINI_CLI |
"близнецы" |
Если интерфейс командной строки .NET обнаруживает несколько агентов, он объединяет различные значения агента с запятой для создания окончательного значения.