Телеметрия .NET SDK и .NET CLI
.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 build
dotnet pack
dotnet 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
. Обратите внимание, что эта переменная не влияет на отказ от телеметрии.
Точки данных
Функция телеметрии не собирает персональные данные, такие как имена пользователей или адреса электронной почты. Он не сканирует код и не извлекает данные уровня проекта, такие как имя, репозиторий или автор. Он не извлекает содержимое файлов данных, к которым обращаются или создаются приложениями, дампы любой памяти, занятой объектами ваших приложений, или содержимое буфера обмена. Данные безопасно отправляются на серверы Майкрософт с помощью технологии Azure Monitor, обладающей ограниченным доступом, и опубликованы под строгим контролем безопасности из защищенных хранилищ Azure.
Защита вашей конфиденциальности важна для нас. Если вы подозреваете, что данные телеметрии собирают конфиденциальные данные или данные небезопасно обрабатываются, отправьте проблему в репозиторий dotnet/sdk или отправьте сообщение электронной почты в dotnet@microsoft.com для расследования.
Функция телеметрии собирает следующие данные:
Версии пакета SDK | Данные |
---|---|
Все | Метка времени вызова. |
Все | Команда, вызванная (например, "сборка"), хэширована начиная с версии 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 | При сбое CLI/SDK тип исключения и его трассировка стека (только код CLI/SDK включен в отправляемую трассировку стека). Дополнительные сведения см. в телеметрии аварийных исключений . |
>=5.0.100 | Hashed TargetFrameworkVersion, используемый для сборки (свойство MSBuild) |
>=5.0.100 | Хешированный идентификатор среды выполнения, используемый для сборки (свойство MSBuild) |
>=5.0.100 | Хэшированные selfContained, используемые для сборки (свойство MSBuild) |
>=5.0.100 | Хэшированный UseApphost, применяемый для сборки (свойство MSBuild) |
>=5.0.100 | Hashed OutputType, используемый для сборки (свойство MSBuild) |
>=5.0.201 | Хешированный PublishReadyToRun, используемый для сборки (свойство MSBuild) |
>=5.0.201 | Используется Hashed PublishTrimmed для сборки (свойство MSBuild) |
>=5.0.201 | Hashed PublishSingleFile, используемый для сборки (свойство MSBuild) |
>=5.0.202 | Прошедшее время от начала процесса до входа в основной метод программы CLI, измеряя время старта хоста и времени выполнения. |
>=5.0.202 | Время, затраченное на добавление инструментов .NET в путь при первом запуске. |
>=5.0.202 | Прошедшее время для отображения уведомления о первом использовании при первом запуске. |
>=5.0.202 | Истекло время создания сертификата ASP.NET при первом запуске. |
>=5.0.202 | Время, затраченное на анализ входных данных CLI. |
>=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 | Хешированный TargetPlatformIdentifier, используемый для сборки (свойство MSBuild) |
>=8.0.100 | Хэширо́ванная HybridGlobalization, используемая для сборки (свойство 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 publish , dotnet run , dotnet test , dotnet vstest |
--runtime |
dotnet build , dotnet publish |
--platform |
dotnet vstest |
--logger |
dotnet vstest |
--sdk-package-version |
dotnet migrate |
Если SDK не может разрешить встроенную команду, любой резолвер команд, который успешно разрешает команду, отправляет хэш имени команды вместе с именем типа резолвера команд.
Кроме --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.
Ниже показан полный список переменных среды и то, что делается с их значениями. Обратите внимание, что в каждом случае значение переменной среды никогда не собирается, используется только для задания логического флага.
Переменные | Поставщик | Действие |
---|---|---|
TF_BUILD | Azure Pipelines | Разобрать логическое значение |
GITHUB_ACTIONS | Действия GitHub | Разобрать логическое значение |
APPVEYOR | Appveyor | Разобрать логическое значение |
CI | Многие или большинство | Разобрать логическое значение |
ТРЭВИС | Трэвис CI | Разобрать логическое значение |
CIRCLECI | Circle CI | Разобрать логическое значение |
CODEBUILD_BUILD_ID, AWS_REGION | Amazon Web Services CodeBuild (сервис для автоматизации сборки и тестирования) | Проверьте, что все значения присутствуют и не равны NULL. |
ИДЕНТИФИКАТОР_СБОРКИ, URL_СБОРКИ | Дженкинс | Проверьте, что все значения присутствуют и не равны NULL. |
BUILD_ID, PROJECT_ID | Google Cloud Build | Проверьте, что все значения присутствуют и не равны NULL. |
TEAMCITY_VERSION | TeamCity | Проверка наличия и ненулевого значения |
JB_SPACE_API_URL | JetBrains Space | Проверка наличия и ненулевого значения |
Избегайте непреднамеренного раскрытия информации
Участники .NET и другие пользователи, работающие с версией пакета SDK для .NET, которые они создали сами, должны рассмотреть путь к исходному коду пакета SDK. Если происходит сбой при использовании пакета SDK для .NET, который является пользовательской сборкой отладки или настроен с помощью пользовательских файлов символов сборки, путь к исходному файлу пакета SDK с компьютера сборки собирается в рамках трассировки стека и не хэшируется.
Из-за этого пользовательские сборки пакета SDK для .NET не должны находиться в каталогах, имена путей которых предоставляют личную или конфиденциальную информацию.