O SDK do .NET inclui um recurso de telemetria que coleta dados de uso e os envia à Microsoft quando você usa comandos da CLI do .NET. Os dados de uso incluem informações de exceção quando a CLI do .NET falha. A CLI do .NET é fornecida com o SDK do .NET e consiste no conjunto de verbos que permitem criar, testar e publicar os aplicativos .NET. É importante que a equipe do .NET entenda como as ferramentas são usadas para poder melhorá-las. As informações sobre falhas ajudam a equipe a resolver problemas e corrigir bugs.
dotnet tem duas funções: executar aplicativos e executar comandos da CLI. A telemetria não é coletada durante o uso de dotnet para iniciar um aplicativo no seguinte formato:
O recurso de telemetria do SDK do .NET está habilitado por padrão para distribuições da Microsoft do SDK. Para recusar o recurso de telemetria, defina a variável de ambiente DOTNET_CLI_TELEMETRY_OPTOUT como 1 ou true.
Uma única entrada de telemetria também é enviada pelo instalador do SDK do .NET quando ocorre uma instalação bem-sucedida. Para recusá-la, defina a variável de ambiente DOTNET_CLI_TELEMETRY_OPTOUT antes de instalar o SDK do .NET.
Importante
Para recusar depois de iniciar o instalador: feche o instalador, defina a variável de ambiente e execute o instalador novamente com esse valor definido.
Divulgação
O SDK do .NET exibe um texto semelhante ao mostrado a seguir quando você executa um dos comandos da CLI do .NET pela primeira vez (por exemplo, dotnet build). O texto pode variar um pouco dependendo da versão do SDK que você está executando. Essa experiência de “primeira execução” é como a Microsoft notifica você sobre a coleta de dados.
Console
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 desabilitar essa mensagem e a mensagem de boas-vindas do .NET, defina a variável de ambiente DOTNET_NOLOGO para true. Observe que essa variável não tem nenhum efeito sobre a aceitação da telemetria.
Pontos de dados
O recurso de telemetria não coleta dados pessoais, como nomes de usuário ou endereços de email. Ele não examina o código nem extrai dados no nível de projeto, como nome, repositório ou autor. Ele não extrai o conteúdo de nenhum arquivo de dados acessado ou criado por seus aplicativos, despejos de qualquer memória ocupada por objetos de seus aplicativos ou o conteúdo da área de transferência. Os dados são enviados com segurança para os servidores Microsoft usando a tecnologia Azure Monitor, mantidos em acesso restrito e publicados sob controles de segurança rigorosos por meio dos sistemas seguros do Armazenamento do Azure.
A proteção de sua privacidade é importante para nós. Se você suspeita que a telemetria está coletando dados confidenciais ou que os dados estão sendo manipulados de modo inseguro ou inadequado, registre um problema no repositório dotnet/sdk ou envie um email para dotnet@microsoft.com para investigação.
O recurso de telemetria coleta os seguintes dados:
Versões do SDK
Dados
Tudo
Carimbo de data/hora da invocação.
Tudo
Comando invocado (por exemplo, "build"), com hash no 2.1 em diante.
Tudo
Três endereços IP de octeto usados para determinar a localização geográfica.
Tudo
Sistema operacional e versão.
Tudo
RID (ID de runtime) em que o SDK está em execução.
Tudo
Versão do SDK do .NET.
Tudo
Perfil de telemetria: um valor opcional usado somente com o consentimento explícito do usuário e usado internamente na Microsoft.
>=2.0
Opções e argumentos de comando: várias opções e vários argumentos são coletados (não cadeias de caracteres arbitrárias). Confira Opções coletadas. Com hash após 2.1.300.
>=2.0
Se o SDK está em execução em um contêiner.
>=2.0
Estruturas de destino (do evento TargetFramework), com hash começando em 2.1.
>=2.0
Endereço MAC (controle de acesso à mídia) com hash (SHA256).
>=2.0
Diretório de trabalho atual com hash.
>=2.0
Instale o relatório de êxito com o nome de arquivo exe do instalador com hash.
>=2.1.300
Versão do kernel.
>=2.1.300
Versão/liberação da Libc.
>=3.0.100
Indica se a saída foi redirecionada (verdadeiro ou falso).
>=3.0.100
Em uma falha da CLI/do SDK, o tipo de exceção e seu rastreamento de pilha (somente o código da CLI/do SDK é incluído no rastreamento de pilha enviado). Para saber mais, consulte Telemetria de exceção de falha.
>=5.0.100
Hashed TargetFrameworkVersion usado para compilação (propriedade MSBuild)
>=5.0.100
Hashed RuntimeIdentifier usado para compilação (propriedade MSBuild)
>=5.0.100
Hashed SelfContained usado para compilação (propriedade MSBuild)
>=5.0.100
Hashed UseApphost usado para compilação (propriedade MSBuild)
>=5.0.100
OutputType com hash usado para compilação (propriedade MSBuild)
>=5.0.201
Hashed PublishReadyToRun usado para compilação (propriedade MSBuild)
>=5.0.201
Hashed PublishTrimmed usado para compilação (propriedade MSBuild)
>=5.0.201
Hashed PublishSingleFile usado para compilação (propriedade MSBuild)
>=5.0.202
Tempo decorrido desde o início do processo até entrar no método principal do programa da CLI, medindo o host e a inicialização do runtime.
>=5.0.202
Tempo decorrido para a etapa que adiciona ferramentas .NET ao caminho na primeira execução.
>=5.0.202
Tempo decorrido para exibir o aviso de uso pela primeira vez na primeira execução.
>=5.0.202
Tempo decorrido para gerar o Certificado ASP.NET na primeira execução.
>=5.0.202
Tempo decorrido para analisar a entrada da CLI.
>=6.0.100
Arquitetura do SO
>=6.0.104
Hashed PublishReadyToRunUseCrossgen2 usado para compilação (propriedade MSBuild)
>=6.0.104
Hashed Crossgen2PackVersion usado para compilação (propriedade MSBuild)
>=6.0.104
Hashed CompileListCount usado para compilação (propriedade MSBuild)
>=6.0.104
Hashed _ReadyToRunCompilationFailures usado para compilação (propriedade MSBuild)
>=6.0.300
Se a CLI foi invocada de um ambiente de Integração Contínua. Para obter mais informações, consulte Detecção de Integração Contínua.
>=7.0.100
Hashed PublishAot usado para compilação (propriedade MSBuild)
>=7.0.100
Hashed PublishProtocol usado para compilação (propriedade MSBuild)
>=8.0.100
TargetPlatformIdentifier com hash usado para compilação (propriedade MSBuild)
>=8.0.100
HybridGlobalization com hash usado para compilação (propriedade MSBuild)
>=8.0.100
Se o SDK do .NET Blazor WebAssembly for usado.
>=8.0.100
Se o SDK do .NET WebAssembly for usado.
>=8.0.100
Se o MAUI do .NET for usado.
>=8.0.100
Se o SDK móvel do .NET for usado.
>=8.0.100
Se outros SDKs móveis forem usados (como: Avalonia, Uno).
>=8.0.100
Se o Mono AOT for usado.
>=8.0.100
Se o recurso IL da faixa de AOT Mono for usado.
>=8.0.100
Se o interpretador Mono for usado.
>=8.0.100
Se o modo de biblioteca para dispositivos móveis for usado.
>=8.0.100
Se o NativeAOT for usado.
>=8.0.100
Versão do pacote de Mono usada.
Opções coletadas
Alguns comandos enviam dados adicionais. 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 (com 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, list ou remove.
dotnet nuget <arg>
A palavra delete, locals ou 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 (hashed).
Um subconjunto de comandos envia as opções selecionadas se elas são 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
Exceto para --verbosity e --sdk-package-version, todos os outros valores são codificados no SDK 2.1.100 do .NET Core em diante.
Telemetria do mecanismo de modelo
O comando dotnet new de instanciação de modelo coleta dados adicionais para modelos criados pela Microsoft, começando com o SDK do .NET Core 2.1.100:
--framework
--auth
Telemetria de exceção de falha
Se a CLI/o SDK do .NET falhar, o nome da exceção e o rastreamento de pilha do código da CLI/do SDK serão coletados. Essas informações são coletadas para avaliar problemas e melhorar a qualidade do SDK e da CLI do .NET. Este artigo fornece informações sobre os dados que coletamos. Ele também fornece dicas sobre como os usuários que criam sua própria versão do SDK do .NET podem evitar a divulgação não intencional de informações pessoais ou confidenciais.
A CLI do .NET coleta informações apenas das exceções da CLI/do SDK, não das exceções no aplicativo. Os dados coletados contêm o nome da exceção e o rastreamento de pilha. Esse rastreamento de pilha é do código da CLI/do SDK.
O seguinte exemplo mostra os tipos de dados coletados:
Console
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)
Detecção de integração contínua
Para detectar se a CLI do .NET está em execução em um ambiente de Integração Contínua, a CLI do .NET investiga a presença e os valores de várias variáveis de ambiente conhecidas definidas pelos provedores de CI comuns.
A lista completa de variáveis de ambiente e o que é feito com seus valores são mostrados abaixo. Observe que, em todos os casos, o valor da variável de ambiente nunca é coletado, ele é usado apenas para definir um sinalizador booliano.
Variável(is)
Provedor
Ação
TF_BUILD
Azure Pipelines
Analisar valor booliano
GITHUB_ACTIONS
GitHub Actions
Analisar valor booliano
APPVEYOR
Appveyor
Analisar valor booliano
CI
Muitos/Maioria
Analisar valor booliano
TRAVIS
Travis CI
Analisar valor booliano
CIRCLECI
CircleCI
Analisar valor booliano
CODEBUILD_BUILD_ID, AWS_REGION
Amazon Web Services (AWS) CodeBuild
Verificar se todos estão presentes e são não nulos
BUILD_ID, BUILD_URL
Jenkins
Verificar se todos estão presentes e são não nulos
BUILD_ID, PROJECT_ID
Google Cloud Build
Verificar se todos estão presentes e são não nulos
TEAMCITY_VERSION
TeamCity
Verificar se está presente e é não nulo
JB_SPACE_API_URL
JetBrains Space
Verificar se está presente e é não nulo
Evitar a divulgação não intencional de informações
Os colaboradores do .NET e qualquer outra pessoa que estejam executando uma versão do SDK do .NET criada por conta própria devem considerar o caminho para o código-fonte do SDK. Se ocorrer uma falha durante o uso de um SDK do .NET que seja um build de depuração personalizado ou configurado com arquivos de símbolo de build personalizado, o caminho do arquivo de origem do SDK do computador de build será coletado como parte do rastreamento de pilha e não terá hash.
Por isso, os builds personalizados do SDK do .NET não devem estar localizados em diretórios cujos nomes de caminho exponham informações pessoais ou confidenciais.
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Neste módulo, você aprenderá a usar a telemetria para registrar o comportamento de um aplicativo nativo de nuvem e como a pilha do .NET Aspire facilita o armazenamento de dados e sua exibição posterior.