Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
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 builddotnet packdotnet 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 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 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 resultado cuando se ejecuta por primera vez uno de los comandos de la CLI de .NET (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. Esta variable no tiene ningún efecto en la exclusión voluntaria de la telemetría.
Nota:
Cambio importante: El comportamiento de los mensajes de telemetría escritos en stderr ha cambiado en las versiones recientes del SDK de .NET. Para más información, consulte comandos de la CLI de dotnet que registran datos no relevantes para comandos en stderr.
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 mediante la tecnología de Azure Monitor . Los datos se mantienen bajo acceso restringido y se publican bajo estrictos controles de seguridad de sistemas seguros de Azure Storage .
Proteger su privacidad es importante para Microsoft. Si sospecha que la telemetría recopila datos confidenciales o los datos se están administrando de forma no segura o inapropiada, abra un problema en el repositorio dotnet/sdk .
Para obtener más información sobre la privacidad y los datos personales recopilados, consulte la Declaración de privacidad de Microsoft.
En las pestañas siguientes se muestran los datos de telemetría capturados por la versión del SDK:
-
SDK versión 10.0.100 y posteriores:
- Identificador de proyecto con hash para
dotnet run. - Tipo de aplicación basada en archivos o en proyectos para
dotnet run. - El nombre del perfil de inicio, si está especificado para
dotnet run. - Si se especificó un perfil de inicio para
dotnet run. - Modelo de configuración de inicio usado (si existe) para
dotnet run. - Número de SDK usados para
dotnet run. - Número de PackageReferences para
dotnet run. - Número de ProjectReferences para
dotnet run. - Número de propiedades adicionales para aplicaciones basadas en archivos con
dotnet run. - Si MSBuild se usó para aplicaciones basadas en archivos con
dotnet run. - Indica si el compilador de Roslyn se usó para aplicaciones basadas en archivos con
dotnet run. - El nombre del agente LLM detectado si se invocó la CLI desde un agente LLM. Para más información, consulte Detección de LLM.
- Captura el
global.jsonestado en el momento en que se invoca un comando. El estado es uno de los siguientes valores: not_found, válido, invalid_json o invalid_data. - Qué generadores de tareas de MSBuild se usan para cargar y ejecutar tareas (incluidas las tareas en línea de C#, las tareas compatibles con varios subprocesos y las tareas fuera del proceso) y cuántas tareas ejecutan.
- Número de tareas de MSBuild ejecutadas en TaskHosts frente a tareas no ejecutadas en TaskHosts.
- Identificador de proyecto con hash para
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.
A partir del SDK de .NET Core 2.1.100, el SDK aplica un hash a todos estos valores, excepto para --verbosity y --sdk-package-version.
Telemetría del motor de plantilla
A partir del SDK de .NET Core 2.1.100, el dotnet new comando de creación de instancias de plantilla recopila datos adicionales para las plantillas creadas por Microsoft:
--framework--auth
dotnet run telemetry
A partir del SDK de .NET 10.0.100, el dotnet run comando recopila telemetría basada en características para ayudar a impulsar el desarrollo y el uso de aplicaciones basadas en archivos.
Telemetría para todas las dotnet run ejecuciones:
- Tipo de aplicación (basado en archivos o basado en proyectos)
- Identificador hash de archivo o proyecto
- Número de SDK usados
- Número de referencias de paquetes
- Número de ProjectReferences
- Uso del perfil de inicio (ya sea que se haya utilizado
--launch-profileo--no-launch-profile) - Si el perfil de inicio es un perfil predeterminado
- Modelo de configuración de inicio aplicado, si existe
Telemetría solo para aplicaciones basadas en archivos:
- Número de propiedades adicionales (por ejemplo,
#:propertydirectivas) - Si se usó MSBuild para compilar
- Si el compilador de Roslyn se usó directamente
Telemetría de las excepciones de bloqueo
Si la CLI de .NET o el SDK se bloquea, se recopilan el nombre de la excepción y la traza de pila del código de la CLI o del SDK. La CLI de .NET recopila esta información para evaluar problemas y mejorar la calidad del SDK y la CLI de .NET.
La CLI de .NET recopila información solo de excepciones de la CLI o del SDK, no de excepciones en la aplicación. Los datos recopilados contienen el nombre de la excepción y el seguimiento de la pila. Esta traza de pila es de código CLI o 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)
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, no debe colocar compilaciones personalizadas del SDK de .NET en directorios cuyos nombres de ruta de acceso expongan información personal o confidencial.
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 comprueba la presencia y los valores de varias variables de entorno conocidas que establecen los proveedores de CI comunes.
En la lista siguiente se muestran las variables de entorno y cómo usa la CLI de .NET sus valores. La CLI de .NET no recopila el valor de ninguna variable de entorno; solo usa el valor para establecer una marca booleana.
| Variable/s | Proveedor | Acción |
|---|---|---|
TF_BUILD |
Azure Pipelines (Canales de Azure) | 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 |
Detección de LLM
Para detectar si la CLI de .NET se ejecuta en el contexto de un agente de LLM, la CLI de .NET comprueba la presencia y los valores de varias variables de entorno que establecen los agentes llM y los asistentes de codificación de IA.
En la tabla siguiente se muestra el nombre del agente, la variable de entorno utilizada para la detección y el valor del tipo de agente notificado. Los valores reales de estas variables de entorno no se recopilan; solo se usan para identificar el tipo de agente.
| Agente LLM | Variable | Importancia |
|---|---|---|
| GitHub Copilot | GITHUB_COPILOT_CLI_MODE |
copiloto |
| Claude Code | CLAUDECODE |
claude |
| Cursor | CURSOR_EDITOR |
cursor |
| Google Gemini | GEMINI_CLI |
"géminis" |
Si la CLI de .NET detecta varios agentes, concatena los distintos valores del agente con una coma para generar el valor final.