El SDK de .NET incluye una característica de telemetría que recopila datos de uso y los envía a Microsoft cuando se usan comandos 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 se incluye en 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 que entienda cómo se usan las herramientas con el fin de mejorarlas. Con la información sobre los errores, el equipo consigue resolver problemas y corregir errores.
dotnet tiene dos funciones: ejecutar aplicaciones y ejecutar comandos de la CLI. La telemetría no se recopila cuando se usa dotnet para iniciar una aplicación con el siguiente formato:
La característica de telemetría del SDK de .NET está habilitada de forma predeterminada para las distribuciones de Microsoft del SDK. Para desactivar 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 no participar una vez iniciado el instalador, ciérrelo, establezca la variable de entorno y ejecute el instalador de nuevo con ese valor establecido.
Divulgación
El SDK de .NET muestra texto similar al siguiente cuando se ejecuta por primera vez uno de los comandos de la CLI de .NET (por ejemplo, dotnet build). El texto puede variar ligeramente según la versión del SDK que ejecute. Esta experiencia de "primera vista" es la forma en que Microsoft le notifica sobre la recopilación de datos.
Consola
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 de bienvenida de .NET, establezca la variable de entorno DOTNET_NOLOGO en true. Tenga en cuenta que esta variable no tiene ningún efecto sobre la exclusión de la telemetría.
Puntos de datos
La característica de telemetría no recopila datos personales, como direcciones de correo electrónico o nombres de usuario. No examina el código ni 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.
La protección de su privacidad es importante para nosotros. Si sospecha que la telemetría está recopilando datos confidenciales o que los datos se están tratando de forma no segura o inapropiada, informe de un problema en el repositorio de dotnet/cli o envíenos un correo electrónico a dotnet@microsoft.com para que lo investiguemos.
La característica de telemetría recopila los siguientes datos:
Versiones del SDK
Datos
Todas
Marca de tiempo de la invocación.
Todas
Comando invocado (por ejemplo, "build"), con hash a partir de 2.1.
Todas
Dirección IP de tres octetos usada para determinar la ubicación geográfica.
Todas
Sistema operativo y versión.
Todas
Identificador de tiempo de ejecución (RID) en el que se ejecuta el SDK.
Todas
Versión del SDK de .NET.
Todas
Perfil de telemetría: valor opcional usado internamente en Microsoft y que solo se usa con la participación explícita del usuario.
>=2.0
Opciones y argumentos del comando: se recopilan varias opciones y argumentos (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 redirigió (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
RuntimeIdentifier con hash usado para la compilación (propiedad de 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 generar el certificado ASP.NET en la primera ejecución.
>=5.0.202
Tiempo transcurrido para analizar la entrada de la CLI.
>=6.0.100
Arquitectura del SO
>=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)
A excepción de --verbosity y --sdk-package-version, se aplica un algoritmo hash a los demás valores a partir del SDK de .NET Core 2.1.100.
Telemetría del motor de plantilla
El comando de creación de instancias de la plantilla 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 los problemas y mejorar la calidad del SDK y la CLI de .NET. En este artículo se proporciona información sobre los datos que se recopilan. También se ofrecen sugerencias para que los usuarios que compilan una versión propia del SDK de .NET eviten la divulgación involuntaria de información personal o confidencial.
La CLI de .NET solo recopila información de las excepciones de la CLI o del SDK, no de las excepciones de la 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 este ejemplo se muestra el tipo de datos que se recopilan:
Consola
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 de integración continua
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, establecidas por 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 todos los casos, 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
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
Comprobar si está presente y no es null
JB_SPACE_API_URL
JetBrains Space
Comprobar si está presente y no es null
Evasión de la divulgación involuntaria de información
Los colaboradores de .NET y cualquier otro usuario que ejecute una versión del SDK de .NET compilada por ellos mismos deben tener en cuenta la ruta de acceso al 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 se deben almacenar en directorios cuyos nombres de ruta de acceso expongan información personal o confidencial.
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
En este módulo, obtendrá información sobre el uso de la telemetría para registrar el comportamiento de una aplicación nativa de nube y cómo la pila Aspire de .NET facilita el almacenamiento de datos y su posterior visualización.