Megosztás:


.NET SDK és .NET CLI-telemetria

A .NET SDK tartalmaz egy telemetriai funkciót, amely összegyűjti a használati adatokat, és elküldi azokat a Microsoftnak .NET CLI parancsok használatakor. A használati adatok kivételadatokat tartalmaznak, amikor a .NET CLI összeomlik. A .NET CLI tartalmazza a .NET SDK-t, és olyan igék készlete, amelyek lehetővé teszik a .NET-alkalmazások összeállítását, tesztelését és közzétételét. A telemetriai adatok segítenek a .NET-csapatnak megérteni az eszközök használatát, hogy javíthassák őket. A hibákkal kapcsolatos információk segítenek a csapatnak megoldani a problémákat és kijavítani a hibákat.

Az összegyűjtött adatokat összesítve a Creative Commons Nevezd meg! licenc alatt teszik közzé. Az összegyűjtött adatok némelyike közzé van téve a .NET CLI telemetriai adatok.

Hatókör

dotnet két funkcióval rendelkezik: alkalmazások futtatásához és parancssori felületi parancsok végrehajtásához. A telemetriai nem gyűjti össze, ha dotnet használatával indít el egy alkalmazást a következő formátumban:

  • dotnet [path-to-app].dll

A telemetria gyűjtésre kerül bármelyik .NET CLI-parancshasználatakor, például:

  • dotnet build
  • dotnet pack
  • dotnet run

Hogyan lehet leiratkozni

A .NET SDK telemetriai funkció alapértelmezés szerint engedélyezve van az SDK Microsoft-disztribúciói esetében. A telemetriai funkció kikapcsolásához állítsa a DOTNET_CLI_TELEMETRY_OPTOUT környezeti változót 1 vagy trueértékre.

A .NET SDK telepítője egyetlen telemetriai bejegyzést küld sikeres telepítés esetén. A leiratkozáshoz állítsa be a DOTNET_CLI_TELEMETRY_OPTOUT környezeti változót a .NET SDK telepítése előtt.

Fontos

Ha a telepítő elindítása után szeretne kikapcsolni: zárja be a telepítőt, állítsa be a környezeti változót, majd futtassa újra a telepítőt ezzel az értékkészlettel.

Közzététel

A .NET SDK az alábbi kimenethez hasonló szöveget jelenít meg, amikor először futtatja az egyik .NET CLI-parancsot (például dotnet build). A szöveg kissé eltérhet a futó SDK verziójától függően. Ez az "első futtatás" élmény az, ahogyan a Microsoft értesíti Önt az adatgyűjtésről.

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

Az üzenet és a .NET üdvözlőüzenet letiltásához állítsa a DOTNET_NOLOGO környezeti változót trueértékre. Ez a változó nincs hatással a telemetriai letiltásra.

Megjegyzés:

Kompatibilitástörő változás: A telemetriai üzenetek viselkedése megváltozott a .NET SDK legutóbbi verzióiban. További információért lásd: a dotnet CLI parancsok a nem parancsokra vonatkozó adatokat az stderr-be naplózzák.

Adatpontok

A telemetriai funkció nem gyűjt személyes adatokat, például felhasználóneveket vagy e-mail-címeket. Nem ellenőrzi a kódot, és nem nyer ki projektszintű adatokat, például nevet, adattárat vagy szerzőt. Nem nyeri ki az alkalmazások által elért vagy létrehozott adatfájlok tartalmát, az alkalmazások objektumai által elfoglalt memóriaszeletek tartalmát vagy a vágólap tartalmát. Az adatok biztonságosan kerülnek a Microsoft-kiszolgálókra az Azure Monitor technológiával. Az adatok korlátozott hozzáféréssel rendelkeznek, és szigorú biztonsági ellenőrzés alatt jelennek meg a biztonságos Azure Storage-rendszerekből .

Az adatvédelem fontos a Microsoft számára. Ha azt gyanítja, hogy a telemetriai adatok bizalmas adatokat gyűjtenek, vagy az adatok nem biztonságosan vagy nem megfelelően vannak kezelve, küldjön egy hibát a dotnet/sdk-adattárban .

Az összegyűjtött adatvédelmi és személyes adatokkal kapcsolatos további információkért tekintse meg a Microsoft adatvédelmi nyilatkozatát.

Az alábbi lapok az SDK-verzió által rögzített telemetriai adatokat jelenítik meg:

  • Az SDK 10.0.100-es és újabb verziója:
    • Kivonatolt projektazonosító a dotnet run számára.
    • Fájlalapú vagy projektalapú dotnet runalkalmazástípus.
    • Az indítási profil neve, ha meg van adva a következőhöz: dotnet run.
    • Meg van-e adva indítási profil a következőhöz dotnet run: .
    • Az indítási beállítások konfigurációs modellje (ha van ilyen) a következőhöz dotnet run: .
    • A használt dotnet runSDK-k száma.
    • A PackageReferences száma a következőhöz dotnet run: .
    • ProjectReferences száma a következőhöz dotnet run: .
    • Fájlalapú alkalmazások esetén a további tulajdonságok száma dotnet run.
    • Azt jelzi, hogy az MSBuild-et fájlalapú alkalmazásokhoz használták-e dotnet run.
    • Jelzi, hogy használták-e a Roslyn fordítót fájlalapú alkalmazásokhoz a következővel dotnet run.
    • Az észlelt LLM-ügynök neve, ha a parancssori felületet egy LLM-ügynökről hívták meg. További információ: LLM-észlelés.
    • Rögzíti az global.json állapotot a parancsok meghívásakor. Az állapot az alábbi értékek egyike: not_found, érvényes, invalid_json vagy invalid_data.
    • Mely MSBuild tevékenység-előállítók használhatók tevékenységek betöltésére és futtatására (beleértve a beágyazott C#-feladatokat, a többszálú és a folyamaton kívüli tevékenységeket), valamint azt, hogy hány feladatot hajtanak végre.
    • A TaskHostsban végrehajtott MSBuild feladatok száma a TaskHostsban nem végrehajtott tevékenységekhez képest.

Összegyűjtött beállítások

Egyes parancsok további adatokat küldenek. A parancsok egy részhalmaza elküldi az első argumentumot:

Parancs Első elküldött argumentumadatok
dotnet help <arg> A parancs súgóját lekérdezik.
dotnet new <arg> A sablon neve (kivonatolt).
dotnet add <arg> A szó package vagy reference.
dotnet remove <arg> A szó package vagy reference.
dotnet list <arg> A szó package vagy reference.
dotnet sln <arg> A add, listvagy removeszó.
dotnet nuget <arg> A delete, localsvagy pushszó.
dotnet workload <subcommand> <arg> A install, update, list, search, uninstall, repair, restore és a számítási feladat neve (kivonatolt).
dotnet tool <subcommand> <arg> A szó install, update, list, search, uninstall, run és a dotnet eszköznév (kivonatolva).

A parancsok egy részhalmaza a kiválasztott beállításokat küldi el, ha használják őket, az értékükkel együtt:

Opció Parancsok
--verbosity Minden parancs
--language dotnet new
--configuration dotnet build, dotnet clean, dotnet publish, dotnet rundotnet test
--framework dotnet build, dotnet clean, dotnet publish, dotnet rundotnet testdotnet vstest
--runtime dotnet build, dotnet publish
--platform dotnet vstest
--logger dotnet vstest
--sdk-package-version dotnet migrate

Ha az SDK nem old fel egy beépített parancsot, a parancsot sikeresen feloldó bármely parancsfeloldó elküldi a parancs nevének kivonatát a parancsfeloldó típusának nevével együtt.

A .NET Core 2.1.100 SDK-tól kezdődően az SDK minden értéket kivonatolt, kivéve --verbosity és --sdk-package-version.

Sablonmotor telemetriai adatai

A .NET Core 2.1.100 SDK-tól kezdve a dotnet new sablon példányosítási parancsa további adatokat gyűjt a Microsoft által készített sablonokhoz:

  • --framework
  • --auth

Dotnet run telemetry - a parancs a telemetriai adatok futtatására vagy ellenőrzésére használatos a .NET környezetben.

A .NET SDK 10.0.100-tól kezdve a dotnet run parancs funkcióalapú telemetriát gyűjt a fájlalapú alkalmazások fejlesztésének és használatának elősegítése érdekében.

Telemetriai adatok az összes dotnet run végrehajtáshoz:

  • Alkalmazás típusa (fájlalapú vagy projektalapú)
  • Kivonatolt projekt vagy fájlazonosító
  • Használt SDK-k száma
  • CsomagReferenciák száma
  • A ProjectReferences száma
  • A profilhasználat módja (hogy --launch-profile vagy --no-launch-profile lett használva)
  • Vajon az indítási profil alapértelmezett profil-e?
  • Indítási beállítások modellje alkalmazva, ha van ilyen

Csak fájlalapú alkalmazások telemetriai adatai:

  • További tulajdonságok száma (például #:property irányelvek)
  • Azt jelzi, hogy az MSBuild-et használták-e az építkezéshez
  • Hogy vajon a Roslyn fordítót közvetlenül használták-e

Összeomlási kivétel telemetriai adatai

Ha a .NET CLI vagy az SDK összeomlik, a parancssori felület vagy az SDK-kód kivételének nevét és veremkövetkeztetésének nevét gyűjti össze. A .NET CLI összegyűjti ezeket az információkat a problémák felméréséhez és a .NET SDK és a parancssori felület minőségének javításához.

A .NET CLI csak a parancssori felület vagy az SDK-kivételek adatait gyűjti, az alkalmazásban lévő kivételeket nem. Az összegyűjtött adatok tartalmazzák a kivétel nevét és a verem nyomkövetését. Ez a verem-nyomkövetés a parancssori rendszer vagy az SDK kódjából származik.

Az alábbi példa az összegyűjtött adatok típusait mutatja be:

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)

A .NET-közreműködőknek és bárki másnak, aki az általuk létrehozott .NET SDK egy verzióját futtatja, figyelembe kell vennie az SDK-forráskód elérési útját. Ha egy egyéni hibakeresési buildet használó vagy egyéni buildszimbólumfájlokkal konfigurált .NET SDK használatakor összeomlás történik, a rendszer a buildelési gép SDK-forrásfájljának elérési útját a veremnyomkövetés részeként gyűjti össze, és nem kerül kivonatolásra.

Emiatt a .NET SDK egyéni buildjei nem helyezhetők el olyan könyvtárakban, amelyek elérési útjai személyes vagy bizalmas információkat fednek fel.

Folyamatos integráció felismerés

Annak észleléséhez, hogy a .NET CLI folyamatos integrációs környezetben fut-e, a .NET CLI számos jól ismert környezeti változó jelenlétét és értékeit ellenőrzi, amelyeket a közös CI-szolgáltatók állítottak be.

Az alábbi lista a környezeti változókat és a .NET CLI értékeinek használatát mutatja be. A .NET CLI nem gyűjti össze a környezeti változók értékét; csak az értéket használja logikai jelölő beállításához.

Változó(k) Szolgáltató Akció
TF_BUILD Azure Pipelines Logikai érték elemzése
GITHUB_ACTIONS GitHub Actions Logikai érték elemzése
APPVEYOR Appveyor Logikai érték elemzése
CI Több/legtöbb Logikai érték elemzése
TRAVIS Travis CI Logikai érték elemzése
CIRCLECI Kör CI Logikai érték elemzése
CODEBUILD_BUILD_ID, AWS_REGION Amazon Web Services CodeBuild Ellenőrizze, hogy mindegyik jelen van-e, és nem null értékű-e
BUILD_ID, BUILD_URL Jenkins Ellenőrizze, hogy mindegyik jelen van-e, és nem null értékű-e
BUILD_ID, PROJECT_ID Google Cloud Build Ellenőrizze, hogy mindegyik jelen van-e, és nem null értékű-e
TEAMCITY_VERSION TeamCity Ellenőrizze, hogy jelen van-e és nem null
JB_SPACE_API_URL JetBrains szóköz Ellenőrizze, hogy jelen van-e és nem null

LLM-észlelés

Annak észleléséhez, hogy a .NET CLI egy LLM-ügynök környezetében fut-e, a .NET CLI ellenőrzi az LLM-ügynökök és az AI-kódolási asszisztensek által beállított számos környezeti változó jelenlétét és értékeit.

Az alábbi táblázat az ügynök nevét, az észleléshez használt környezeti változót és a jelentett ügynöktípus értékét mutatja. Ezeknek a környezeti változóknak a tényleges értékeit nem gyűjti össze a rendszer– csak az ügynök típusának azonosítására használják őket.

LLM-ügynök Variable Érték
GitHub Copilot GITHUB_COPILOT_CLI_MODE "Társpilóta"
Claude Code CLAUDECODE claude
Cursor CURSOR_EDITOR "kurzor"
Google Gemini GEMINI_CLI "gemini"

Ha a .NET CLI több ügynököt észlel, összefűzi a különböző ügynökértékeket egy vesszővel a végső érték létrehozásához.

Lásd még: