Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O SDK do
Os dados recolhidos são publicados de forma agregada sob a Creative Commons Attribution License. Alguns dos dados coletados são publicados em .NET CLI Telemetry Data.
Âmbito de aplicação
dotnet tem duas funções: executar aplicativos e executar comandos da CLI. O de telemetria não é coletado ao usar dotnet para iniciar um aplicativo no seguinte formato:
dotnet [path-to-app].dll
O de telemetria é coletado ao usar qualquer um dos comandos da CLI do .NET, como:
dotnet builddotnet packdotnet run
Como optar por não participar
O recurso de telemetria do SDK do .NET é habilitado por padrão para distribuições Microsoft do SDK. Para desativar o recurso de telemetria, defina a variável de ambiente DOTNET_CLI_TELEMETRY_OPTOUT como 1 ou true.
O instalador do SDK .NET envia uma única entrada de telemetria quando ocorre uma instalação bem-sucedida. Para desativar, defina a variável de ambiente DOTNET_CLI_TELEMETRY_OPTOUT antes de instalar o SDK do .NET.
Importante
Para optar por sair depois de iniciar o instalador: feche o instalador, defina a variável de ambiente e depois execute novamente o instalador com esse valor definido.
Divulgação
O SDK .NET apresenta texto semelhante ao seguinte resultado quando executa pela primeira vez um dos comandos da CLI . NET (por exemplo, dotnet build). O texto pode variar ligeiramente dependendo da versão do SDK que estás a usar. Essa experiência de "primeira execução" é como a Microsoft notifica você sobre a coleta de dados.
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 desativar essa mensagem e a mensagem de boas-vindas do .NET, defina a variável de ambiente DOTNET_NOLOGO como true. Esta variável não tem efeito na desativação da telemetria.
Observação
Mudança de última hora: O comportamento das mensagens de telemetria para stderr as quais foram escritas mudou nas versões recentes do SDK .NET. Para obter mais informações, consulte os comandos do dotnet CLI registam dados não relevantes para o comando no stderr.
Pontos de dados
O recurso de telemetria não coleta dados pessoais, como nomes de usuário ou endereços de e-mail. Ele não verifica seu código e não extrai dados no nível do projeto, como nome, repositório ou autor. Não extrai o conteúdo de nenhum ficheiro de dados acedido ou criado pelos seus aplicativos, nem registos de qualquer parte da memória ocupada pelos objetos dos seus aplicativos, nem o conteúdo da área de transferência. Os dados são enviados de forma segura para os servidores Microsoft através da tecnologia Azure Monitor . Os dados são mantidos sob acesso restrito e publicados sob rigorosos controlos de segurança a partir de sistemas seguros Azure Storage .
Proteger a sua privacidade é importante para a Microsoft. Se suspeitar que a telemetria está a recolher dados sensíveis ou que os dados estão a ser tratados de forma insegura ou inadequada, arquive uma questão no repositório dotnet/sdk .
Para mais informações sobre a sua privacidade e dados pessoais recolhidos, consulte a Declaração de Privacidade da Microsoft.
As abas seguintes mostram os dados de telemetria capturados na versão do SDK:
-
SDK versão 10.0.100 e posteriores:
- Identificador de projeto com hash para
dotnet run. - Tipo de aplicação baseado em ficheiro ou baseado em projeto para
dotnet run. - O nome do perfil de inicialização, se especificado para
dotnet run. - Se um perfil de inicialização foi especificado para
dotnet run. - O modelo de configuração das configurações de lançamento usado (se houver) para
dotnet run. - Número de SDKs usados para
dotnet run. - Número de PackageReferences para
dotnet run. - Número de ProjectReferences para
dotnet run. - Número de propriedades adicionais para aplicações baseadas em ficheiro com
dotnet run. - Se o MSBuild foi usado para aplicações baseadas em ficheiro com
dotnet run. - Se o compilador Roslyn foi usado para aplicações baseadas em arquivos com
dotnet run. - O nome do agente LLM detetado caso a CLI tenha sido invocada por um agente LLM. Para obter mais informações, consulte Deteção de LLM.
- Captura o
global.jsonestado no momento em que um comando é invocado. O estado é um dos seguintes valores: not_found, válido, invalid_json ou invalid_data. - Quais fábricas de tarefas do MSBuild são usadas para carregar e executar tarefas (incluindo tarefas C# embutidas, tarefas com reconhecimento de vários threads e tarefas fora do processo) e quantas tarefas elas executam.
- Número de tarefas do MSBuild executadas em TaskHosts versus tarefas não executadas em TaskHosts.
- Identificador de projeto com hash para
Opções recolhidas
Certos comandos enviam dados extra. Um subconjunto de comandos envia o primeiro argumento:
| Comando | Dados do primeiro argumento enviados |
|---|---|
dotnet help <arg> |
A ajuda do comando está sendo consultada. |
dotnet new <arg> |
O nome do modelo (codificado em hash). |
dotnet add <arg> |
A palavra package ou reference. |
dotnet remove <arg> |
A palavra package ou reference. |
dotnet list <arg> |
A palavra package ou reference. |
dotnet sln <arg> |
A palavra add, listou remove. |
dotnet nuget <arg> |
A palavra delete, localsou push. |
dotnet workload <subcommand> <arg> |
A palavra install, update, list, search, uninstall, repair, restore e o nome da carga de trabalho (hashed). |
dotnet tool <subcommand> <arg> |
A palavra install, update, list, search, uninstall, run e o nome da ferramenta dotnet (com hash). |
Um subconjunto de comandos envia as opções selecionadas se forem usadas, juntamente com seus valores:
| Opção | Comandos |
|---|---|
--verbosity |
Todos os 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 |
Quando o SDK não consegue resolver um comando interno, qualquer resolvedor de comando que resolva com êxito o comando envia um hash do nome do comando junto com o nome do tipo de resolvedor de comando.
A partir do .NET Core 2.1.100 SDK, o SDK faz o hash de todos estes valores, exceto --verbosity e --sdk-package-version.
Telemetria do mecanismo de modelo
A partir do .NET Core 2.1.100 SDK, o dotnet new comando de instância de templates recolhe dados extra para templates criados pela Microsoft:
--framework--auth
executar dotnet telemetria
A partir do .NET SDK 10.0.100, o dotnet run comando recolhe telemetria baseada em funcionalidades para ajudar a impulsionar o desenvolvimento e utilização de aplicações baseadas em ficheiros.
Telemetria para todas as dotnet run execuções:
- Tipo de aplicativo (baseado em arquivo ou em projeto)
- Projeto Hashed ou identificador de arquivo
- Número de SDKs usados
- Número de PackageReferences
- Número de ProjectReferences
- Iniciar o uso do perfil (se
--launch-profileou--no-launch-profilefoi usado) - Se o perfil de inicialização é um perfil padrão
- Modelo de configurações de inicialização aplicado, se houver
Telemetria apenas para aplicativos baseados em arquivos:
- Número de propriedades adicionais (por exemplo, diretivas
#:property) - Se o MSBuild foi usado para construção
- Se o compilador Roslyn foi usado diretamente
Telemetria de exceção de falha
Se a CLI ou o SDK do .NET falhar, é recolhido o nome da exceção e o rasto de pilha do código da CLI ou do SDK. A CLI .NET recolhe esta informação para avaliar problemas e melhorar a qualidade do SDK e da CLI .NET.
A CLI .NET recolhe informações apenas para exceções de CLI ou SDK, não exceções na sua aplicação. Os dados coletados contêm o nome da exceção e o rastreamento de pilha. Este rastreio de stack é de código CLI ou SDK.
O exemplo a seguir mostra o tipo de dados coletados:
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)
Os colaboradores do .NET e qualquer outra pessoa que execute uma versão do SDK do .NET que eles mesmos criaram devem considerar o caminho para o código-fonte do SDK. Se ocorrer um crash ao usar um SDK do .NET que seja uma compilação de debug personalizada ou configurada com arquivos de símbolo de compilação personalizados, o caminho do arquivo de origem do SDK da máquina de compilação será coletado como parte do stack trace e não será hashed.
Por esta razão, não deve colocar builds personalizadas do SDK .NET em diretórios cujos caminhos possam revelar informações pessoais ou sensíveis.
Deteção de integração contínua
Para detetar se a CLI .NET está a correr num ambiente de integração contínua, a CLI .NET verifica a presença e os valores de várias variáveis de ambiente bem conhecidas que os fornecedores comuns de CI definem.
A lista seguinte mostra as variáveis de ambiente e como a CLI .NET utiliza os seus valores. A CLI .NET não recolhe o valor de nenhuma variável de ambiente; só usa o valor para definir uma bandeira booleana.
| Variável(es) | Fornecedor | Ação |
|---|---|---|
TF_BUILD |
Azure Pipelines (Pipelines do Azure) | Analisar valor booleano |
GITHUB_ACTIONS |
GitHub Actions | Analisar valor booleano |
APPVEYOR |
Fornecedor | Analisar valor booleano |
CI |
Muitos/A maioria | Analisar valor booleano |
TRAVIS |
Travis CI | Analisar valor booleano |
CIRCLECI |
Círculo CI | Analisar valor booleano |
CODEBUILD_BUILD_ID, AWS_REGION |
Serviço CodeBuild da Amazon Web Services | Verifique se todos estão presentes e não são nulos |
BUILD_ID, BUILD_URL |
Jenkins • | Verifique se todos estão presentes e não são nulos |
BUILD_ID, PROJECT_ID |
Compilação do Google Cloud | Verifique se todos estão presentes e não são nulos |
TEAMCITY_VERSION |
Cidade Equipa | Verifique se está presente e não é nulo |
JB_SPACE_API_URL |
Espaço JetBrains | Verifique se está presente e não é nulo |
Deteção de Modelos de Linguagem de Grande Escala (LLM)
Para detetar se a CLI .NET está a correr no contexto de um agente LLM, a CLI .NET verifica a presença e os valores de várias variáveis de ambiente definidas pelos agentes LLM e assistentes de programação de IA.
A tabela a seguir mostra o nome do agente, a variável de ambiente usada para deteção e o valor do tipo de agente relatado. Os valores reais destas variáveis de ambiente não são recolhidos — são usados apenas para identificar o tipo de agente.
| Agente LLM | Variable | Valor |
|---|---|---|
| GitHub Copilot | GITHUB_COPILOT_CLI_MODE |
"Copiloto" |
| Código Claude | CLAUDECODE |
"Claude" |
| Cursor | CURSOR_EDITOR |
"cursor" |
| Google Gêmeos | GEMINI_CLI |
"Gêmeos" |
Se a CLI .NET detetar múltiplos agentes, concatena os diferentes valores dos agentes com uma vírgula para produzir o valor final.