Телеметрия .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 | Hashed 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) |
>=8.0.100 | Hashed TargetPlatformIdentifier, используемый для сборки (свойство MSBuild) |
>=8.0.100 | Хэшированная гибриднаяGlobalization, используемая для сборки (свойство MSBuild) |
>=8.0.100 | Используется ли пакет SDK для .NET Blazor WebAssembly. |
>=8.0.100 | Используется ли пакет SDK для .NET WebAssembly. |
>=8.0.100 | Используется ли .NET MAUI. |
>=8.0.100 | Используется ли пакет SDK для .NET для мобильных устройств. |
>=8.0.100 | Используются ли другие мобильные пакеты SDK (например, Avalonia, Uno). |
>=8.0.100 | Используется ли Mono AOT. |
>=8.0.100 | Используется ли функция Mono AOT strip IL. |
>=8.0.100 | Используется ли интерпретатор Mono. |
>=8.0.100 | Используется ли режим библиотеки для мобильных устройств. |
>=8.0.100 | Используется ли NativeAOT. |
>=8.0.100 | Используется версия пакета среды выполнения Mono. |
Собираемые параметры
Некоторые команды отправляют дополнительные данные. Подмножество команд отправляет первый аргумент:
Команда | Данные первого аргумента отправлены |
---|---|
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 clean dotnet publish , dotnet run dotnet test |
--framework |
dotnet build , , dotnet clean dotnet run dotnet publish dotnet 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 не должны размещаться в каталогах, имена путей которых раскрывают персональные или конфиденциальные сведения.