Telemetría del SDK de .NET y la CLI de .NET
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.
Los datos recopilados se publican de 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.
Ámbito
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:
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 desactivar la característica
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.
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) |
>=6.0.300 | Si se invocó la CLI desde un entorno de integración continua. Para 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
Determinados comandos envían datos adicionales. Un subconjunto de comandos envía el primer argumento:
Comando | Datos del primer 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 las 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 |
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:
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.