Телеметрия .NET SDK и .NET CLI

Пакет SDK для .NET включает функцию телеметрии, которая собирает данные об использовании и отправляет его в Корпорацию Майкрософт при использовании команд .NET CLI . Данные об использовании содержат сведения об исключении при сбое интерфейса командной строки .NET. .NET CLI поставляется с пакетом SDK для .NET и представляет собой набор команд, позволяющих создавать, тестировать и публиковать приложения .NET. Данные телеметрии помогают команде .NET понять, как используются средства, чтобы их можно было улучшить. Сведения об ошибках помогают команде решать проблемы и устранять ошибки.

Данные публикуются в сводной форме по лицензии Creative Commons Attribution. Некоторые собранные данные публикуются в данных телеметрии .NET CLI.

Область

dotnet имеет две функции: для запуска приложений и выполнения команд CLI. Данные телеметрии не собираются при использовании dotnet для запуска приложения в следующем формате:

  • dotnet [path-to-app].dll

Данные телеметрии собираются при использовании команд CLI .NET, например:

  • dotnet build
  • dotnet pack
  • dotnet run

Как отключить функцию

Функция телеметрии пакета SDK для .NET включена по умолчанию для дистрибутивов Пакета SDK майкрософт. Чтобы отключить ее, присвойте переменной среды DOTNET_CLI_TELEMETRY_OPTOUT значение 1 или true.

При успешной установке программа установки пакета SDK для .NET отправляет единую запись телеметрии. Чтобы отказаться от этого, задайте переменную среды DOTNET_CLI_TELEMETRY_OPTOUT перед установкой пакета SDK для .NET.

Внимание

Чтобы отказаться от отправки данных телеметрии после запуска установщика, закройте установщик, задайте переменную среды, а затем снова запустите установщик с заданной переменной среды.

Раскрытие информации

При первом выполнении одной из команд .NET CLI (например, dotnet build) пакет SDK для .NET выводит следующий текст. Он может немного отличаться в зависимости от используемой версии пакета 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. Обратите внимание, что эта переменная не влияет на отказ от отправки данных телеметрии.

Точки данных

Функция телеметрии не собирает персональные данные, например имена пользователей и их адреса электронной почты. Она не проверяет код и не извлекает данные уровня проекта, например имя, репозиторий или автора. Он не извлекает содержимое файлов данных, к которым обращаются или создаются приложениями, дампы любой памяти, занятой объектами ваших приложений, или содержимое буфера обмена. Данные отправляются по защищенному протоколу на серверы Майкрософт с помощью технологии Azure Monitor, хранятся в режиме ограниченного доступа и используются в защищенных системах хранилища Azure с соблюдением строгих мер безопасности.

Мы заботимся о вашей конфиденциальности. Если у вас есть подозрения, что функция телеметрии собирает конфиденциальные данные или что мы обрабатываем данные небезопасным либо неподобающим образом, отправьте сообщение о проблеме в репозитории dotnet/sdk или по адресу dotnet@microsoft.com для изучения.

Функция телеметрии собирает следующие данные:

Версии пакета SDK Data
Все Метка времени вызова.
Все Вызываемая команда (например, build), хэшируется с версии 2.1.
Все Состоящий из трех октетов IP-адрес, используемый для определения географического местоположения.
Все Операционная система и ее версия.
Все Идентификатор среды выполнения (RID), в которой работает пакет SDK.
Все Версия пакета SDK для .NET.
Все Профиль телеметрии: необязательное значение используется только при явном включении пользователем и внутри корпорации Майкрософт.
>=2.0 Аргументы и параметры команды: собираются только известные аргументы и параметры (но не произвольные строки). См. раздел о собираемых параметрах. Хэшируется после версии 2.1.300.
>=2.0 выполняется ли пакет SDK в контейнере;
>=2.0 Целевые платформы (из события TargetFramework), хэшируются начиная с версии 2.1.
>=2.0 Адрес управления доступом к среде передачи данных (MAC-адрес) с хэшированием (SHA256).
>=2.0 хэшированный текущий рабочий каталог.
>=2.0 Отчет об успешном выполнении установки с хэшированным именем EXE-файла установщика.
>=2.1.300 Версия ядра.
>=2.1.300 Выпуск или версия libc.
>=3.0.100 Были ли перенаправлены выходные данные (true или false).
>=3.0.100 При сбое интерфейса командной строки или пакета SDK тип исключения и его трассировка стека (в отправляемую трассировку стека включается только код CLI или SDK). Дополнительные сведения см. в разделе телеметрии исключений аварийного сбоя.
>=5.0.100 Используемое для сборки хэшированное значение TargetFrameworkVersion (свойство MSBuild)
>=5.0.100 Используемое для сборки хэшированное значение RuntimeIdentifier (свойство MSBuild)
>=5.0.100 Используемое для сборки хэшированное значение SelfContained (свойство MSBuild)
>=5.0.100 Используемое для сборки хэшированное значение UseApphost (свойство MSBuild)
>=5.0.100 Используемое для сборки хэшированное значение OutputType (свойство MSBuild)
>=5.0.201 Hashed PublishReadyToRun, используемый для сборки (свойство MSBuild)
>=5.0.201 Hashed PublishTrimmed, используемый для сборки (свойство MSBuild)
>=5.0.201 Hashed PublishSingleFile, используемый для сборки (свойство MSBuild)
>=5.0.202 Затраченное время с момента запуска процесса до входа в главный метод (main) программы интерфейса командной строки. Анализируется запуск узла и среды выполнения.
>=5.0.202 Затраченное время на выполнение шага, добавляющего средства .NET для пути при первом запуске.
>=5.0.202 Затраченное время на отображение уведомления о первом использовании при первом запуске.
>=5.0.202 Затраченное время на создание сертификата ASP.NET при первом запуске.
>=5.0.202 Затраченное время на анализ входных данных интерфейса командной строки.
>=6.0.100 Архитектура ОС
>=6.0.104 Hashed PublishReadyToRunUseCrossgen2, используемый для сборки (свойство MSBuild)
>=6.0.104 Hashed Crossgen2PackVersion, используемый для сборки (свойство MSBuild)
>=6.0.104 Hashed CompileListCount, используемый для сборки (свойство MSBuild)
>=6.0.104 Хэшированные _ReadyToRunCompilationFailures, используемые для сборки (свойство MSBuild)
>=6.0.300 Если интерфейс командной строки был вызван из среды непрерывной интеграции. Дополнительные сведения см. в разделе "Обнаружение непрерывной интеграции".
>=7.0.100 Hashed PublishAot, используемый для сборки (свойство MSBuild)
>=7.0.100 Hashed PublishProtocol, используемый для сборки (свойство MSBuild)

Собираемые параметры

Некоторые команды отправляют дополнительные данные. Подмножество команд отправляет первый аргумент:

Команда Данные первого аргумента отправлены
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 rundotnet publishdotnet test,dotnet vstest
--runtime dotnet build, dotnet publish
--platform dotnet vstest
--logger dotnet vstest
--sdk-package-version dotnet migrate

За исключением --verbosity и --sdk-package-version все остальные значения хэшируются, начиная с пакета SDK для .NET Core 2.1.100.

Телеметрия обработчика шаблонов

Команда dotnet new создания шаблонов собирает дополнительные данные для шаблонов, созданных Корпорацией Майкрософт, начиная с пакета SDK для .NET Core 2.1.100:

  • --framework
  • --auth

Данные телеметрии исключений аварийного сбоя

В случае сбоя .NET CLI или пакета SDK он собирает имя исключения и трассировку стека кода CLI/SDK. Эти сведения собираются для оценки проблем и улучшения качества пакета SDK для .NET и интерфейса командной строки. В этой статье приводятся сведения о данных, которые мы собираем. Кроме того, она содержит советы, помогающие пользователям, создающим собственную версию пакета SDK для .NET, избежать случайного раскрытия персональных или конфиденциальных сведений.

Интерфейс командной строки .NET собирает сведения только для исключений 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 в среде непрерывной интеграции, интерфейс командной строки .NET проверяет наличие и значения нескольких известных переменных среды, которые задают общие поставщики CI.

Ниже показан полный список переменных среды и то, что делается с их значениями. Обратите внимание, что в каждом случае значение переменной среды никогда не собирается, используется только для задания логического флага.

Переменные Provider Действие
TF_BUILD Azure Pipelines Логическое значение синтаксического анализа
GITHUB_ACTIONS GitHub Actions Логическое значение синтаксического анализа
APPVEYOR Appveyor Логическое значение синтаксического анализа
CI Многие или большинство Логическое значение синтаксического анализа
ТРЭВИС Travis CI Логическое значение синтаксического анализа
CIRCLECI CircleCI Логическое значение синтаксического анализа
CODEBUILD_BUILD_ID, AWS_REGION Amazon Web Services CodeBuild Проверка наличия всех значений и значений, отличных от NULL
BUILD_ID, BUILD_URL Jenkins Проверка наличия всех значений и значений, отличных от NULL
BUILD_ID, PROJECT_ID Google Cloud Build Проверка наличия всех значений и значений, отличных от NULL
TEAMCITY_VERSION TeamCity. Проверка наличия и ненулевого значения
JB_SPACE_API_URL Пространство JetBrains Проверка наличия и ненулевого значения

Избегайте случайного разглашения информации

Участники .NET и все остальные, кто использует версию пакета SDK для .NET, которую они создали сами, должны учитывать путь к исходному коду пакета SDK. Если сбой происходит при использовании пакета SDK для .NET, который является пользовательской сборкой отладки или настроен с помощью файлов пользовательских символов сборки, путь к исходному файлу пакета SDK с компьютера сборки собирается как часть трассировки стека и не хэшируется.

По этой причине пользовательские сборки пакета SDK для .NET не должны размещаться в каталогах, имена путей которых раскрывают персональные или конфиденциальные сведения.

См. также