O SDK do .NET inclui um recurso de telemetria que coleta dados de uso e os envia para a 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 vem com o SDK do .NET e é o conjunto de verbos que permitem criar, testar e publicar seus aplicativos .NET. Os dados de telemetria ajudam a equipe do .NET a entender como as ferramentas são usadas para que possam ser melhoradas. 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. 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 build
dotnet pack
dotnet 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.
Uma única entrada de telemetria também é enviada pelo instalador do SDK do .NET 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 desativar depois de iniciar o instalador: feche o instalador, defina a variável de ambiente e, em seguida, execute o instalador novamente com esse valor definido.
Divulgação
O SDK do .NET exibe texto semelhante ao seguinte quando você executa pela primeira vez um dos comandos da CLI do .NET (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.
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. Observe que essa variável não tem efeito sobre a opção de exclusão da telemetria.
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 servidores Microsoft usando tecnologia de do Azure Monitor, mantidos sob acesso restrito e publicados sob rígidos controles de segurança de sistemas de de Armazenamento Azure seguros.
Proteger a sua privacidade é importante para nós. Se você suspeitar que a telemetria está coletando dados confidenciais ou que os dados estão sendo tratados de forma insegura ou inadequada, registre um problema no repositório dotnet/sdk ou envie um e-mail para 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"), processado com hash a partir da versão 2.1.
Todos
Três endereços IP de octeto usados para determinar a localização geográfica.
Tudo
Sistema operacional e versão.
Tudo
ID de tempo de execução (RID) em que o SDK está sendo executado.
Tudo
Versão do SDK do .NET.
Tudo
Perfil de telemetria: um valor opcional usado apenas com aceitação explícita do usuário e usado internamente na Microsoft.
>=2,0
Argumentos e opções de comando: vários argumentos e opções são coletados (não cadeias de caracteres arbitrárias). Consulte as opções recolhidas. Hashed após 2.1.300.
>=2,0
Se o SDK está sendo executado em um contêiner.
>=2,0
Frameworks de destino (do evento TargetFramework), com hash a partir de 2.1.
>=2,0
Endereço de Controle de Acesso de Mídia com Hash (MAC) (SHA256).
>=2,0
Diretório de trabalho atual hasheado.
>=2,0
Relatório de sucesso da instalação, com o nome de ficheiro exe do instalador com hash.
>=2.1.300
Versão do kernel.
>=2.1.300
Lançamento/versão do Libc.
>=3.0.100
Se a saída foi redirecionada (true ou false).
>=3.0.100
Em uma falha de CLI/SDK, o tipo de exceção e o seu rastreamento da pilha (inclui-se apenas o código CLI/SDK no rastreamento da pilha enviado). Para obter mais informações, 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 o processo de compilação (propriedade MSBuild)
>=5.0.100
Hashed OutputType 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é a entrada no método principal do programa de linha de comando (CLI), medindo a inicialização do host e do tempo de execução.
>=5.0.202
Tempo decorrido para a etapa que adiciona o .NET Tools 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 ASP.NET Certificado 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 utilizado durante a compilação (propriedade MSBuild)
>=6.0.104
Hashed Crossgen2PackVersion utilizado para compilação (propriedade do MSBuild)
>=6.0.104
Hashed CompileListCount usado para compilação (propriedade MSBuild)
>=6.0.104
Hashed _ReadyToRunCompilationFailures utilizado para a compilação (propriedade MSBuild)
>=6.0.300
Se a CLI foi invocada a partir 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
Hashed TargetPlatformIdentifier usado para compilação (propriedade MSBuild)
>=8.0.100
Hashed HybridGlobalization usado para a compilação (propriedade MSBuild)
>=8.0.100
Se o .NET Blazor WebAssembly SDK é usado.
>=8.0.100
Se o .NET WebAssembly SDK é usado.
>=8.0.100
Se o .NET MAUI é usado.
>=8.0.100
Se o SDK móvel .NET é usado.
>=8.0.100
Se outros SDKs móveis são usados (como: Avalonia, Uno).
>=8.0.100
Se o Mono AOT é usado.
>=8.0.100
Se o recurso Mono AOT strip IL é usado.
>=8.0.100
Se o intérprete Mono é usado.
>=8.0.100
Se o modo de biblioteca para dispositivos móveis é usado.
>=8.0.100
Se NativeAOT é usado.
>=8.0.100
Versão do pacote de tempo de execução Mono usada.
Opções recolhidas
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 (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
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.
Com exceção de --verbosity e --sdk-package-version, todos os outros valores são colocados em hash a partir do SDK do .NET Core 2.1.100.
Telemetria do mecanismo de modelo
O comando de instanciação de modelo dotnet new 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 o .NET CLI/SDK falhar, ele recolherá o nome da exceção e o stack trace do código CLI/SDK. 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 recolhemos. 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 inadvertida de informações pessoais ou confidenciais.
A CLI do .NET coleta informações apenas para exceções de CLI/SDK, não exceções em seu aplicativo. Os dados coletados contêm o nome da exceção e o rastreamento de pilha. Esse rastreamento de pilha é de código CLI/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)
Deteção de integração contínua
Para detetar se a CLI do .NET está sendo executada 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 que os provedores de CI comuns definem.
A lista completa de variáveis de ambiente, e o que é feito com seus valores, é mostrada abaixo. Observe que, em todos os casos, o valor da variável de ambiente nunca é coletado, usado apenas para definir um sinalizador booleano.
Variável(es)
Fornecedor
Ação
TF_BUILD
Azure Pipelines
Analisar valor booleano
GITHUB_ACTIONS
Ações do GitHub
Analisar valor booleano
APPVEYOR
Fornecedor
Analisar valor booleano
IC
Muitos/A maioria
Analisar valor booleano
TRAVIS
Travis CI
Analisar valor booleano
CIRCLECI
Círculo CI
Analisar valor booleano
CODEBUILD_BUILD_ID, AWS_REGION
Amazon Web Services CodeBuild
Verifique se todos estão presentes e não são nulos
IDENTIFICADOR_DE_CONSTRUÇÃO, URL_DE_CONSTRUÇÃO
Jenkins •
Verifique se todos estão presentes e não são nulos
ID_DE_CONSTRUÇÃO, ID_DE_PROJETO
Google Cloud Build
Certifique-se de que todos estão presentes e não são nulos
TEAMCITY_VERSION
TeamCity
Verifique se está presente e não é nulo
JB_SPACE_API_URL
Espaço JetBrains
Verifique se está presente e não é nulo
Evitar a divulgação inadvertida de informações
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 isso, compilações personalizadas do SDK do .NET não devem estar localizadas em diretórios cujos nomes de caminho expõem informações pessoais ou confidenciais.
A origem deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever problemas e pedidos Pull. Para mais informações, consulte o nosso guia do contribuidor.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Neste módulo, você aprenderá sobre como usar a telemetria para registrar o comportamento de um aplicativo nativo da nuvem e como a pilha do .NET Aspire facilita o armazenamento de dados e a visualização posterior.