Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
.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 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 |
Circle 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 Space | Проверка наличия и ненулевого значения |
Обнаружение LLM
Чтобы определить, выполняется ли интерфейс командной строки .NET в контексте агента LLM, интерфейс командной строки .NET проверяет наличие и значения нескольких переменных среды, заданных агентами LLM и помощниками по программированию ИИ.
В следующей таблице показаны имя агента, переменная среды, используемая для обнаружения, и значение указанного типа агента. Фактические значения этих переменных среды не собираются— они используются только для идентификации типа агента.
| Агент LLM | Variable | Ценность |
|---|---|---|
| GitHub Copilot | GITHUB_COPILOT_CLI_MODE |
Копилот-система |
| Код Клода | CLAUDECODE |
Клод |
| Cursor | CURSOR_EDITOR |
курсор |
| Google Gemini | GEMINI_CLI |
"близнецы" |
Если интерфейс командной строки .NET обнаруживает несколько агентов, он объединяет различные значения агента с запятой для создания окончательного значения.