.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 , list eller remove . |
dotnet nuget <arg> |
Ordet delete , locals eller 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-version
hashas 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.