Dela via


.NET SDK- och .NET CLI-telemetri

.NET SDK- innehåller en telemetrifunktion som samlar in användningsdata och skickar dem till Microsoft när du använder .NET CLI--kommandon. Användningsdata innehåller undantagsinformation när .NET CLI kraschar. .NET CLI levereras med .NET SDK och är en uppsättning verb som gör att du kan skapa, testa och publicera dina .NET-appar. Telemetridata hjälper .NET-teamet att förstå hur verktygen används så att de kan förbättras. Information om fel hjälper teamet att lösa problem och åtgärda buggar.

Insamlade data publiceras aggregerat under Creative Commons Attribution License. En del av de insamlade data publiceras på .NET CLI Telemetry Data.

Omfattning

dotnet har två funktioner: att köra appar och köra CLI-kommandon. Telemetri samlas inte in när dotnet används för att starta ett program i följande format:

  • dotnet [path-to-app].dll

Telemetri samlas in när du använder något av .NET CLI-kommandon, till exempel:

  • dotnet build
  • dotnet pack
  • dotnet run

Så här avregistrerar du dig

.NET SDK-telemetrifunktionen är aktiverad som standard för Microsoft-distributioner av SDK. Om du vill välja bort telemetrifunktionen anger du DOTNET_CLI_TELEMETRY_OPTOUT miljövariabeln till 1 eller true.

En enda telemetripost skickas också av .NET SDK-installationsprogrammet när en lyckad installation sker. Om du vill avanmäla dig anger du miljövariabeln DOTNET_CLI_TELEMETRY_OPTOUT innan du installerar .NET SDK.

Viktig

Om du vill avanmäla dig när du har startat installationsprogrammet: stäng installationsprogrammet, ange miljövariabeln och kör sedan installationsprogrammet igen med den värdeuppsättningen.

Avslöjande

.NET SDK visar text som liknar följande när du först kör något av .NET CLI-kommandon (till exempel dotnet build). Texten kan variera något beroende på vilken version av SDK du kör. Den här "första körningsupplevelsen" är hur Microsoft meddelar dig om datainsamling.

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

Om du vill inaktivera det här meddelandet och .NET-välkomstmeddelandet anger du DOTNET_NOLOGO miljövariabeln till true. Observera att den här variabeln har ingen effekt på telemetri avanmälan.

Datapunkter

Telemetrifunktionen samlar inte in personuppgifter, till exempel användarnamn eller e-postadresser. Den söker inte igenom koden och extraherar inte data på projektnivå, till exempel namn, lagringsplats eller författare. Det extraherar inte innehållet i datafiler som används eller skapas av dina appar, inte heller dumpar av minne som upptas av dina appars objekt eller innehållet i urklipp. Data skickas säkert till Microsoft-servrar med hjälp av Azure Monitor- teknik, hålls under begränsad åtkomst och publiceras under strikta säkerhetskontroller från säkra Azure Storage-system.

Att skydda din integritet är viktigt för oss. Om du misstänker att telemetrin samlar in känsliga data eller om data hanteras på ett osäkert eller olämpligt sätt kan du skicka ett problem i dotnet/sdk lagringsplats eller skicka ett e-postmeddelande till dotnet@microsoft.com för undersökning.

Telemetrifunktionen samlar in följande data:

SDK-versioner Data
Alla Tidsstämpel för anrop.
Alla Kommandot anropas (till exempel "build"), hasherat från och med 2.1.
Alla IP-adress med tre oktetter används för att fastställa den geografiska platsen.
Alla Operativsystem och version.
Alla Körnings-ID (RID) på vilket SDK:t körs.
Alla .NET SDK-version.
Alla Telemetriprofil: ett valfritt värde som endast används med explicit användaranmälning och används internt på Microsoft.
>=2.0 Kommandoargument och alternativ: flera argument och alternativ samlas in (inte godtyckliga strängar). Se insamlade alternativ. Hashade efter 2.1.300.
>=2.0 Om SDK:et körs i en container.
>=2.0 Målramverk (från händelsen TargetFramework), hashade från och med 2.1.
>=2.0 Hashed Media Access Control (MAC)-adress (SHA256).
>=2.0 Hashade aktuell arbetskatalog.
>=2.0 Rapport om lyckad installation med det hashade exe-filnamnet för installationsprogrammet.
>=2.1.300 Kernel-version.
>=2.1.300 Libc utgåva/version.
>=3.0.100 Om utdata omdirigerades (sant eller falskt).
>=3.0.100 Vid en CLI/SDK-krasch ingår undantagstypen och dess stacktrace (endast CLI/SDK-koden ingår i den stacktrace som skickas). För mer information, se undantagstelemetri för krasch.
>=5.0.100 Hashed TargetFrameworkVersion som används för kompilering (MSBuild-egenskap)
>=5.0.100 Hashed RuntimeIdentifier som används för kompilering (MSBuild-egenskap)
>=5.0.100 Hashed SelfContained används för kompilering (MSBuild-egenskap)
>=5.0.100 Hashed UseApphost används för bygget (MSBuild-egenskap)
>=5.0.100 Hashed OutputType används vid kompilation (MSBuild-egenskap)
>=5.0.201 Hashed PublishReadyToRun används för build (MSBuild-egenskap)
>=5.0.201 Hashed PublishTrimmed används för kompilering (MSBuild-egenskap)
>=5.0.201 Hashed PublishSingleFile används för kompilering (MSBuild-egenskap)
>=5.0.202 Förfluten tid från processstart till inträdet i CLI-programmets huvudmetod, vilket mäter värd- och körningens starttid.
>=5.0.202 Förfluten tid för steget som lägger till .NET Tools i sökvägen vid första körningen.
>=5.0.202 Den tid som har förflutit för att visa det första användningsmeddelandet vid första starten.
>=5.0.202 Förfluten tid för att generera ASP.NET certifikat vid första körningen.
>=5.0.202 Förfluten tid för att parsa CLI-indata.
>=6.0.100 OS-arkitektur
>=6.0.104 Hashed PublishReadyToRunUseCrossgen2 används för kompilering (MSBuild-egenskap)
>=6.0.104 Hashed Crossgen2PackVersion används för kompilering (MSBuild-egenskap)
>=6.0.104 Hashed CompileListCount används för bygge (MSBuild-egenskap)
>=6.0.104 Hashade _ReadyToRunCompilationFailures används för kompilering (MSBuild-egenskap)
>=6.0.300 Om CLI anropades från en miljö för kontinuerlig integrering. För mer information, se Detektering av kontinuerlig integration.
>=7.0.100 Hashed PublishAot används för kompilering (MSBuild-egenskap)
>=7.0.100 Hashed PublishProtocol används för kompilering (MSBuild-egenskap)
>=8.0.100 Hashed TargetPlatformIdentifier används för kompilering (MSBuild-egenskap)
>=8.0.100 Hashed HybridGlobalization används för att bygga (MSBuild-egenskap)
>=8.0.100 Om .NET Blazor WebAssembly SDK används.
>=8.0.100 Om .NET WebAssembly SDK används.
>=8.0.100 Om .NET MAUI används.
>=8.0.100 Om .NET Mobile SDK används.
>=8.0.100 Om andra mobila SDK:er används (till exempel: Avalonia, Uno).
>=8.0.100 Om Mono AOT används.
>=8.0.100 Huruvida Mono AOT strip IL-funktionen används.
>=8.0.100 Om monotolkare används.
>=8.0.100 Om biblioteksläget för mobila enheter används.
>=8.0.100 Om NativeAOT används.
>=8.0.100 Mono runtime pack-versionen används.

Sammanställda alternativ

Vissa kommandon skickar ytterligare data. En delmängd av kommandon skickar det första argumentet:

Befallning Första argumentdata som skickats
dotnet help <arg> Kommandohjälpen efterfrågas.
dotnet new <arg> Mallnamnet (hashat).
dotnet add <arg> Ordet package eller reference.
dotnet remove <arg> Ordet package eller reference.
dotnet list <arg> Ordet package eller reference.
dotnet sln <arg> Ordet add, listeller remove.
dotnet nuget <arg> Ordet delete, localseller push.
dotnet workload <subcommand> <arg> Ordet install, update, list, search, uninstall, repair, restore, och arbetsbelastningsnamnet (hashed).
dotnet tool <subcommand> <arg> Ordet install, update, list, search, uninstall, run och dotnet verktygsnamn (hashad).

En delmängd av kommandon skickar valda alternativ om de används, tillsammans med deras värden:

Alternativ Kommandon
--verbosity Alla kommandon
--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

När SDK:et inte löser ett inbyggt kommando skickar alla kommandomatchare som löser kommandot en hash av kommandonamnet tillsammans med namnet på kommandomatchartypen.

Förutom --verbosity och --sdk-package-versionhashas alla andra värden från och med .NET Core 2.1.100 SDK.

Telemetri för mallmotor

Instansieringskommandot dotnet new mall samlar in ytterligare data för Microsoft-skapade mallar, från och med .NET Core 2.1.100 SDK:

  • --framework
  • --auth

Telemetri för kraschundantag

Om .NET CLI/SDK kraschar samlar den in namnet på undantaget och stackspårningen av CLI/SDK-koden. Den här informationen samlas in för att utvärdera problem och förbättra kvaliteten på .NET SDK och CLI. Den här artikeln innehåller information om de data vi samlar in. Det ger också tips om hur användare som skapar sin egen version av .NET SDK kan undvika oavsiktligt avslöjande av personlig eller känslig information.

.NET CLI samlar endast in information om CLI/SDK-undantag, inte undantag i ditt program. De insamlade data innehåller namnet på undantaget och stackspårningen. Den här stackspårningen är från CLI/SDK-kod.

I följande exempel visas den typ av data som samlas in:

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)

Kontinuerlig integration detektion

För att identifiera om .NET CLI körs i en miljö för kontinuerlig integrering avsöker .NET CLI förekomsten och värdena för flera välkända miljövariabler som vanliga CI-providers anger.

Den fullständiga listan över miljövariabler och vad som görs med deras värden visas nedan. Observera att värdet för miljövariabeln i varje fall aldrig samlas in, endast används för att ange en boolesk flagga.

Variabel(ler) Leverantör Handling
TF_BUILD Azure Pipelines Parsa booleskt värde
GITHUB_ACTIONS GitHub Actions Parsa booleskt värde
APPVEYOR Appveyor Parsa booleskt värde
CI Många/mest Parsa booleskt värde
TRAVIS Travis CI Parsa booleskt värde
CIRCLECI CircleCI Parsa booleskt värde
CODEBUILD_BUILD_ID, AWS_REGION Amazon Web Services CodeBuild Kontrollera om alla finns och inte är null
BUILD_ID, BUILD_URL Jenkins Kontrollera om alla finns och inte är null
Bygg_ID, Projekt_ID Google Cloud Build Kontrollera om alla finns och inte är null
TEAMCITY_VERSION TeamCity Kontrollera om det finns och inte är null-värde
JB_SPACE_API_URL JetBrains Space Kontrollera om det finns och inte är null-värde

Undvik oavsiktligt avslöjande av information

.NET-deltagare och alla andra som kör en version av .NET SDK som de har skapat själva bör överväga sökvägen till sin SDK-källkod. Om en krasch inträffar när du använder en .NET SDK som är en anpassad felsökningsversion eller konfigureras med anpassade build-symbolfiler, samlas SDK-källfilens sökväg från byggdatorn in som en del av stackspårningen och hashas inte.

Därför bör anpassade versioner av .NET SDK inte finnas i kataloger vars sökvägsnamn exponerar personlig eller känslig information.

Se även