Telemetría del SDK de .NET.NET SDK telemetry

El SDK de .NET incluye una característica de telemetría que recopila datos de uso e información de excepciones cuando se bloquea la CLI de .NET.The .NET SDK includes a telemetry feature that collects usage data and exception information when the .NET CLI crashes. 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.The .NET CLI comes with the .NET SDK and is the set of verbs that enable you to build, test, and publish your .NET apps. Es importante que el equipo de .NET entienda cómo se usan las herramientas con el fin de mejorarlas.It's important that the .NET team understands how the tools are used so they can be improved. Con la información sobre los errores, el equipo consigue resolver problemas y corregir errores.Information on failures helps the team resolve problems and fix bugs.

Los datos recopilados se publican de forma agregada bajo la licencia de atribución de Creative Commons.The collected data is published in aggregate under the Creative Commons Attribution License.

ÁmbitoScope

dotnet tiene dos funciones: ejecutar aplicaciones y ejecutar comandos de la CLI.dotnet has two functions: to run apps, and to execute CLI commands. La telemetría no se recopila cuando se usa dotnet para iniciar una aplicación con el siguiente formato:Telemetry isn't collected when using dotnet to start an application in the following format:

  • dotnet [path-to-app].dll

La telemetría se recopila cuando se usa cualquiera de los comandos de la CLI de .NET, como:Telemetry is collected when using any of the .NET CLI commands, such as:

  • dotnet build
  • dotnet pack
  • dotnet run

Cómo desactivar la característicaHow to opt out

La característica de telemetría del SDK de .NET está habilitada de manera predeterminada.The .NET SDK telemetry feature is enabled by default. Para desactivar la característica de telemetría, establezca la variable de entorno DOTNET_CLI_TELEMETRY_OPTOUT en 1 o true.To opt out of the telemetry feature, set the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 or true.

El instalador del SDK de .NET también envía una única entrada de telemetría cuando se produce una instalación correcta.A single telemetry entry is also sent by the .NET SDK installer when a successful installation happens. Para no participar, establezca la variable de entorno DOTNET_CLI_TELEMETRY_OPTOUT antes de instalar el SDK de .NET.To opt out, set the DOTNET_CLI_TELEMETRY_OPTOUT environment variable before you install the .NET SDK.

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.To opt out after you started the installer: close the installer, set the environment variable, and then run the installer again with that value set.

DivulgaciónDisclosure

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).The .NET SDK displays text similar to the following when you first run one of the .NET CLI commands (for example, dotnet build). El texto puede variar ligeramente según la versión del SDK que ejecute.Text may vary slightly depending on the version of the SDK you're running. Esta experiencia de "primera vista" es la forma en que Microsoft le notifica sobre la recopilación de datos.This "first run" experience is how Microsoft notifies you about data collection.

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.To disable this message and the .NET welcome message, set the DOTNET_NOLOGO environment variable to true. Tenga en cuenta que esta variable no tiene ningún efecto sobre la exclusión de la telemetría.Note that this variable has no effect on telemetry opt out.

Puntos de datosData points

La característica de telemetría no recopila datos personales, como direcciones de correo electrónico o nombres de usuario.The telemetry feature doesn't collect personal data, such as usernames or email addresses. No examina el código ni extrae datos de nivel de proyecto, como el nombre, el repositorio o el autor.It doesn't scan your code and doesn't extract project-level data, such as name, repository, or author. 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.The data is sent securely to Microsoft servers using Azure Monitor technology, held under restricted access, and published under strict security controls from secure Azure Storage systems.

La protección de su privacidad es importante para nosotros.Protecting your privacy is important to us. 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.If you suspect the telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the dotnet/sdk repository or send an email to dotnet@microsoft.com for investigation.

La característica de telemetría recopila los siguientes datos:The telemetry feature collects the following data:

Versiones del SDKSDK versions DatosData
TodasAll Marca de tiempo de la invocación.Timestamp of invocation.
TodasAll Comando invocado (por ejemplo, "build"), con hash a partir de 2.1.Command invoked (for example, "build"), hashed starting in 2.1.
TodasAll Dirección IP de tres octetos usada para determinar la ubicación geográfica.Three octet IP address used to determine the geographical location.
TodasAll Sistema operativo y versión.Operating system and version.
TodasAll Identificador de tiempo de ejecución (RID) en el que se ejecuta el SDK.Runtime ID (RID) the SDK is running on.
TodasAll Versión del SDK de .NET..NET SDK version.
TodasAll Perfil de telemetría: valor opcional usado internamente en Microsoft y que solo se usa con la participación explícita del usuario.Telemetry profile: an optional value only used with explicit user opt-in and used internally at Microsoft.
>=2.0>=2.0 Opciones y argumentos del comando: se recopilan varias opciones y argumentos (no cadenas arbitrarias).Command arguments and options: several arguments and options are collected (not arbitrary strings). Vea opciones recopiladas.See collected options. Con hash a partir de la versión 2.1.300.Hashed after 2.1.300.
>=2.0>=2.0 Si el SDK se ejecuta en un contenedor.Whether the SDK is running in a container.
>=2.0>=2.0 Plataformas de destino (desde el evento TargetFramework), con hash a partir de 2.1.Target frameworks (from the TargetFramework event), hashed starting in 2.1.
>=2.0>=2.0 Dirección de Media Access Control (MAC) con hash (SHA256).Hashed Media Access Control (MAC) address (SHA256).
>=2.0>=2.0 Directorio de trabajo actual con hash.Hashed current working directory.
>=2.0>=2.0 Informe de instalación correcta, con el nombre de archivo exe del instalador con hash.Install success report, with hashed installer exe filename.
>=2.1.300>=2.1.300 Versión de kernel.Kernel version.
>=2.1.300>=2.1.300 Versión/versión de libc.Libc release/version.
>=3.0.100>=3.0.100 Indica si la salida se redirigió (true o false).Whether the output was redirected (true or false).
>=3.0.100>=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).On a CLI/SDK crash, the exception type and its stack trace (only CLI/SDK code is included in the stack trace sent). Para obtener más información, vea Telemetría de la excepción de bloqueo de SDK/CLI de .NET Core recopilada.For more information, see .NET CLI/SDK crash exception telemetry collected.
>=5.0.202>=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.Elapsed time from process start until entering the CLI program's main method, measuring host and runtime startup.
>=5.0.202>=5.0.202 Tiempo transcurrido para el paso que agrega herramientas de .NET a la ruta de acceso en la primera ejecución.Elapsed time for the step that adds .NET Tools to the path on first run.
>=5.0.202>=5.0.202 Tiempo transcurrido para mostrar el aviso de uso por primera vez en la primera ejecución.Elapsed time to display first time use notice on first run.
>=5.0.202>=5.0.202 Tiempo transcurrido para generar el certificado ASP.NET en la primera ejecución.Elapsed time for generating ASP.NET Certificate on first run.
>=5.0.202>=5.0.202 Tiempo transcurrido para analizar la entrada de la CLI.Elapsed time to parse the CLI input.

Opciones recopiladasCollected options

Determinados comandos envían datos adicionales.Certain commands send additional data. Un subconjunto de comandos envía el primer argumento:A subset of commands sends the first argument:

ComandoCommand Datos del primer argumento enviadosFirst argument data sent
dotnet help <arg> Se está consultando la ayuda del comando.The command help is being queried for.
dotnet new <arg> Nombre de la plantilla (con hash).The template name (hashed).
dotnet add <arg> La palabra package o reference.The word package or reference.
dotnet remove <arg> La palabra package o reference.The word package or reference.
dotnet list <arg> La palabra package o reference.The word package or reference.
dotnet sln <arg> La palabra add, list o remove.The word add, list, or remove.
dotnet nuget <arg> La palabra delete, locals o push.The word delete, locals, or push.

Un subconjunto de comandos envía las opciones seleccionadas, si se usan, junto con sus valores:A subset of commands sends selected options if they're used, along with their values:

OpciónOption ComandosCommands
--verbosity Todos los comandosAll commands
--language dotnet new
--configuration dotnet build, dotnet clean, dotnet publish, dotnet run, dotnet testdotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test
--framework dotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test, dotnet vstestdotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test, dotnet vstest
--runtime dotnet build, dotnet publishdotnet 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.Except for --verbosity and --sdk-package-version, all the other values are hashed starting with .NET Core 2.1.100 SDK.

Telemetría de la excepción de bloqueo de SDK/CLI de .NET Core recopilada.NET CLI/SDK crash exception telemetry collected

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.If the .NET CLI/SDK crashes, it collects the name of the exception and stack trace of the CLI/SDK code. Esta información se recopila para evaluar los problemas y mejorar la calidad del SDK y la CLI de .NET.This information is collected to assess problems and improve the quality of the .NET SDK and CLI. En este artículo se proporciona información sobre los datos que se recopilan.This article provides information about the data we collect. 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.It also provides tips on how users building their own version of the .NET SDK can avoid inadvertent disclosure of personal or sensitive information.

Tipos de datos recopiladosTypes of collected data

La CLI de .NET solo recopila información de las excepciones de la CLI o el SDK, no de las excepciones de la aplicación..NET CLI collects information for CLI/SDK exceptions only, not exceptions in your application. Los datos recopilados contienen el nombre de la excepción y el seguimiento de la pila.The collected data contains the name of the exception and the stack trace. Este seguimiento de la pila es del código de CLI/SDK.This stack trace is of CLI/SDK code.

En este ejemplo se muestra el tipo de datos que se recopilan:The following example shows the kind of data that is collected:

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)

Evasión de la divulgación involuntaria de informaciónAvoid inadvertent disclosure of information

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..NET contributors and anyone else running a version of the .NET SDK that they built themselves should consider the path to their SDK source code. 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.If a crash occurs while using a .NET SDK that is a custom debug build or configured with custom build symbol files, the SDK source file path from the build machine is collected as part of the stack trace and isn't hashed.

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.Because of this, custom builds of the .NET SDK shouldn't be located in directories whose path names expose personal or sensitive information.

Vea tambiénSee also