Compartir a través de


Telemetría del SDK de .NET y de la CLI de .NET

El SDK de .NET incluye una característica de telemetría que recopila datos de uso y la envía a Microsoft cuando se usan comandos de de la CLI de .NET . Los datos de uso incluyen la información de excepción cuando se bloquea la CLI de .NET. La CLI de .NET incluye el SDK de .NET y es el conjunto de verbos que permiten compilar, probar y publicar las aplicaciones de .NET. Los datos de telemetría ayudan al equipo de .NET a comprender cómo se usan las herramientas para que se puedan mejorar. La información sobre errores ayuda al equipo a resolver problemas y a corregir errores.

Los datos recopilados se publican en forma agregada bajo la Licencia de atribución de Creative Commons. Algunos de los datos recopilados se publican en Datos de telemetría de la CLI de .NET.

Alcance

dotnet tiene dos funciones: para ejecutar aplicaciones y para ejecutar comandos de la CLI. La telemetría no se recopila cuando se usa dotnet para iniciar una aplicación con el siguiente formato:

  • dotnet [path-to-app].dll

La telemetría se recopila cuando se usa cualquiera de los comandos de la CLI de .NET, como:

  • dotnet build
  • dotnet pack
  • dotnet run

Cómo darse de baja

La característica de telemetría del SDK de .NET está habilitada de forma predeterminada para las distribuciones de Microsoft del SDK. Para no participar en la característica de telemetría, establezca la variable de entorno DOTNET_CLI_TELEMETRY_OPTOUT en 1 o true.

El instalador del SDK de .NET también envía una única entrada de telemetría cuando se produce una instalación correcta. Para no participar, establezca la variable de entorno DOTNET_CLI_TELEMETRY_OPTOUT antes de instalar el SDK de .NET.

Importante

Para rechazarlo después de iniciar el instalador: cierre el instalador, establezca la variable de entorno y vuelva a ejecutar el instalador con ese valor establecido.

Revelación

El SDK de .NET muestra texto similar al siguiente al ejecutar por primera vez uno de los comandos de la CLI de .NET de (por ejemplo, dotnet build). El texto puede variar ligeramente en función de la versión del SDK que esté ejecutando. Esta experiencia de "primera ejecución" es la forma en que Microsoft le notifica sobre la recopilación de datos.

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

Para deshabilitar este mensaje y el mensaje de bienvenida de .NET, establezca la variable de entorno DOTNET_NOLOGO en true. Tenga en cuenta que esta variable no tiene ningún efecto en la exclusión de telemetría.

Puntos de datos

La característica de telemetría no recopila datos personales, como nombres de usuario o direcciones de correo electrónico. No examina el código y no extrae datos de nivel de proyecto, como el nombre, el repositorio o el autor. No extrae el contenido de los archivos de datos a los que acceden o crean sus aplicaciones, ni los volcados de la memoria ocupada por los objetos de las aplicaciones, ni el contenido del portapapeles. Los datos se envían de forma segura a los servidores de Microsoft con tecnología de Azure Monitor, se conservan bajo acceso restringido y se publican bajo controles de seguridad estrictos de sistemas seguros de Azure Storage.

Proteger su privacidad es importante para nosotros. Si sospecha que la telemetría recopila datos confidenciales o los datos se están administrando de forma no segura o inapropiada, envíe un problema en el repositorio de dotnet/sdk o envíe un correo electrónico a dotnet@microsoft.com para su investigación.

La característica de telemetría recopila los datos siguientes:

Versiones del SDK Datos
All Marca de tiempo de la invocación.
All Comando invocado (por ejemplo, "build"), con hash a partir de 2.1.
All Tres direcciones IP de octeto usadas para determinar la ubicación geográfica.
All Sistema operativo y versión.
All Identificador de tiempo de ejecución (RID) en el que se ejecuta el SDK.
All Versión del SDK de .NET.
All Perfil de telemetría: un valor opcional que solo se usa con la participación explícita del usuario y se usa internamente en Microsoft.
>=2.0 Argumentos y opciones de comando: se recopilan varios argumentos y opciones (no cadenas arbitrarias). Vea opciones recopiladas. Con hash a partir de la versión 2.1.300.
>=2.0 Si el SDK se ejecuta en un contenedor.
>=2.0 Plataformas de destino (desde el evento TargetFramework), con hash a partir de 2.1.
>=2.0 Dirección de Media Access Control (MAC) con hash (SHA256).
>=2.0 Directorio de trabajo actual con hash.
>=2.0 Informe de instalación correcta, con el nombre de archivo exe del instalador con hash.
>=2.1.300 Versión de kernel.
>=2.1.300 Versión/versión de libc.
>=3.0.100 Indica si la salida se ha redirigido (true o false).
>=3.0.100 En un bloqueo de CLI/SDK, el tipo de excepción y su seguimiento de pila (solo el código de CLI/SDK se incluye en el seguimiento de la pila enviado). Para más información, consulte Telemetría de las excepciones de bloqueo.
>=5.0.100 TargetFrameworkVersion con hash usado para la compilación (propiedad de MSBuild)
>=5.0.100 Identificador de tiempo de ejecución hashed utilizado para la compilación (propiedad MSBuild)
>=5.0.100 SelfContained con hash usado para la compilación (propiedad de MSBuild)
>=5.0.100 UseApphost con hash usado para la compilación (propiedad de MSBuild)
>=5.0.100 OutputType con hash usado para la compilación (propiedad de MSBuild)
>=5.0.201 PublishReadyToRun con hash usado para la compilación (propiedad de MSBuild)
>=5.0.201 PublishTrimmed con hash usado para la compilación (propiedad de MSBuild)
>=5.0.201 PublishSingleFile con hash usado para la compilación (propiedad de MSBuild)
>=5.0.202 Tiempo transcurrido desde el inicio del proceso hasta que se escribe el método principal del programa de la CLI, midiendo el inicio del host y del entorno de ejecución.
>=5.0.202 Tiempo transcurrido para el paso que agrega herramientas de .NET a la ruta de acceso en la primera ejecución.
>=5.0.202 Tiempo transcurrido para mostrar el aviso de uso por primera vez en la primera ejecución.
>=5.0.202 Tiempo transcurrido para la generación del certificado de ASP.NET en la primera ejecución.
>=5.0.202 Tiempo transcurrido para analizar la entrada de la CLI.
>=6.0.100 Arquitectura del sistema operativo
>=6.0.104 PublishReadyToRunUseCrossgen2 con hash usado para la compilación (propiedad de MSBuild)
>=6.0.104 Crossgen2PackVersion con hash usado para la compilación (propiedad de MSBuild)
>=6.0.104 CompileListCount con hash usado para la compilación (propiedad de MSBuild)
>=6.0.104 _ReadyToRunCompilationFailures con hash usado para la compilación (propiedad de MSBuild)
>=6.0.300 Si la CLI se invocó desde un entorno de integración continua. Para obtener más información, consulte Detección de Integración Continua.
>=7.0.100 PublishAot con hash usado para la compilación (propiedad de MSBuild)
>=7.0.100 PublishProtocol con hash usado para la compilación (propiedad de MSBuild)
>=8.0.100 TargetPlatformIdentifier con hash usado para la compilación (propiedad MSBuild)
>=8.0.100 HybridGlobalization con hash usado para la compilación (propiedad de MSBuild)
>=8.0.100 Indica si se usa el SDK de WebAssembly de .NET Blazor.
>=8.0.100 Indica si se usa el SDK de WebAssembly de .NET.
>=8.0.100 Indica si se usa .NET MAUI.
>=8.0.100 Indica si se usa el SDK móvil de .NET.
>=8.0.100 Si se usan otros SDK móviles (como: Avalonia, Uno).
>=8.0.100 Indica si se usa Mono AOT.
>=8.0.100 Si se usa la característica Mono AOT strip IL.
>=8.0.100 Indica si se usa el intérprete de Mono.
>=8.0.100 Indica si se usa el modo de biblioteca para dispositivos móviles.
>=8.0.100 Indica si se usa NativeAOT.
>=8.0.100 Se usa la versión del paquete en tiempo de ejecución de Mono.

Opciones recopiladas

Algunos comandos envían datos adicionales. Un subconjunto de comandos envía el primer argumento:

Get-Help Primeros datos de argumento enviados
dotnet help <arg> Se está consultando la ayuda del comando.
dotnet new <arg> Nombre de la plantilla (con hash).
dotnet add <arg> La palabra package o reference.
dotnet remove <arg> La palabra package o reference.
dotnet list <arg> La palabra package o reference.
dotnet sln <arg> La palabra add, list o remove.
dotnet nuget <arg> La palabra delete, locals o push.
dotnet workload <subcommand> <arg> La palabra install, update, list, search, uninstall, repair o restore y el nombre de la carga de trabajo (con hash).
dotnet tool <subcommand> <arg> La palabra install, update, list, search, uninstall o run y el nombre de la herramienta dotnet (con hash).

Un subconjunto de comandos envía opciones seleccionadas si se usan, junto con sus valores:

Opción Comandos
--verbosity Todos los comandos
--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

Cuando el SDK no puede resolver un comando integrado, cualquier solucionador de comandos que resuelva correctamente el comando envía un hash del nombre del comando junto con el nombre del tipo de solucionador de comandos.

Excepto --verbosity y --sdk-package-version, todos los demás valores son generados usando un hash a partir de .NET Core 2.1.100 SDK.

Telemetría del motor de plantilla

El comando de creación de instancias de plantilla de dotnet new recopila datos adicionales para plantillas creadas por Microsoft, a partir del SDK de .NET Core 2.1.100:

  • --framework
  • --auth

Telemetría de las excepciones de bloqueo

Si se bloquea el SDK o la CLI de .NET, se recopilan el nombre de la excepción y el seguimiento de la pila del código de la CLI o el SDK. Esta información se recopila para evaluar problemas y mejorar la calidad del SDK y la CLI de .NET. En este artículo se proporciona información sobre los datos que recopilamos. También proporciona sugerencias sobre cómo los usuarios que crean su propia versión del SDK de .NET pueden evitar la divulgación involuntaria de información personal o confidencial.

La CLI de .NET recopila información solo para excepciones de CLI/SDK, no excepciones en tu aplicación. Los datos recopilados contienen el nombre de la excepción y el seguimiento de la pila. Este seguimiento de la pila es del código de CLI/SDK.

En el ejemplo siguiente se muestra el tipo de datos que se recopilan:

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)

Detección continua de integración

Para detectar si la CLI de .NET se ejecuta en un entorno de integración continua, la CLI de .NET sondea la presencia y los valores de varias variables de entorno conocidas que establecen los proveedores de CI comunes.

A continuación se muestra la lista completa de variables de entorno y lo que se hace con sus valores. Tenga en cuenta que, en cada caso, el valor de la variable de entorno nunca se recopila, solo se usa para establecer una marca booleana.

Variable/s Proveedor Acción
TF_BUILD Azure Pipelines Análisis del valor booleano
GITHUB_ACTIONS Acciones de GitHub Análisis del valor booleano
APPVEYOR Appveyor Análisis del valor booleano
CI Muchos o la mayoría Análisis del valor booleano
TRAVIS Travis CI Análisis del valor booleano
CIRCLECI CircleCI Análisis del valor booleano
CODEBUILD_BUILD_ID, AWS_REGION Amazon Web Services CodeBuild, un servicio de construcción de código Comprobar si están todos presentes y no son null
BUILD_ID, BUILD_URL Jenkins Comprobar si están todos presentes y no son null
BUILD_ID, PROJECT_ID Google Cloud Build Comprobar si están todos presentes y no son null
TEAMCITY_VERSION TeamCity Comprobación de si está presente y no es NULL
JB_SPACE_API_URL Espacio JetBrains Comprobación de si está presente y no es NULL

Evitar la divulgación involuntaria de información

Los colaboradores de .NET y cualquier otra persona que ejecute una versión del SDK de .NET que hayan compilado ellos mismos deben considerar la ruta de acceso a su código fuente del SDK. Si se produce un bloqueo mientras se usa un SDK de .NET que es una compilación de depuración personalizada o está configurado con archivos de símbolos de compilación personalizados, la ruta de acceso del archivo de origen del SDK desde el equipo de compilación se recopila como parte del seguimiento de la pila y no tiene un algoritmo hash.

Por este motivo, las compilaciones personalizadas del SDK de .NET no deben encontrarse en directorios cuyos nombres de ruta de acceso expongan información personal o confidencial.

Consulte también