Telemetría del SDK de .NET y de la CLI de .NET
El SDK de .NET
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.