De .NET SDK- bevat een telemetriefunctie waarmee gebruiksgegevens worden verzameld en naar Microsoft worden verzonden wanneer u .NET CLI opdrachten gebruikt. De gebruiksgegevens bevatten uitzonderingsgegevens wanneer de .NET CLI vastloopt. De .NET CLI wordt geleverd met de .NET SDK en is de set werkwoorden waarmee u uw .NET-apps kunt bouwen, testen en publiceren. Met telemetriegegevens kan het .NET-team begrijpen hoe de hulpprogramma's worden gebruikt, zodat ze kunnen worden verbeterd. Informatie over fouten helpt het team bij het oplossen van problemen en het oplossen van fouten.
dotnet heeft twee functies: om apps uit te voeren en CLI-opdrachten uit te voeren. Telemetrie wordt niet verzameld wanneer u dotnet gebruikt om een toepassing in het volgende formaat te starten:
dotnet [path-to-app].dll
Telemetrie wordt verzameld bij het gebruik van een van de .NET CLI-opdrachten, zoals:
dotnet build
dotnet pack
dotnet run
Hoe u zich kunt afmelden
De .NET SDK-telemetriefunctie is standaard ingeschakeld voor Microsoft-distributies van de SDK. Als u zich wilt afmelden voor de telemetriefunctie, stelt u de omgevingsvariabele DOTNET_CLI_TELEMETRY_OPTOUT in op 1 of true.
Er wordt ook één telemetrie-vermelding verzonden door het .NET SDK-installatieprogramma wanneer er een geslaagde installatie plaatsvindt. Als u zich wilt afmelden, stelt u de omgevingsvariabele DOTNET_CLI_TELEMETRY_OPTOUT in voordat u de .NET SDK installeert.
Belangrijk
Als u zich wilt afmelden nadat u het installatieprogramma hebt gestart: sluit het installatieprogramma, stelt u de omgevingsvariabele in en voert u het installatieprogramma opnieuw uit met die waardeset.
Openbaarmaking
De .NET SDK geeft tekst weer die lijkt op het volgende wanneer u voor het eerst een van de .NET CLI-opdrachten uitvoert (bijvoorbeeld dotnet build). De tekst kan enigszins variëren, afhankelijk van de versie van de SDK die u uitvoert. Deze ervaring bij de eerste keer is hoe Microsoft u op de hoogte stelt van gegevensverzameling.
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
Als u dit bericht en het .NET-welkomstbericht wilt uitschakelen, stelt u de omgevingsvariabele DOTNET_NOLOGO in op true. Houd er rekening mee dat deze variabele geen effect heeft op het afmelden voor telemetrie.
Gegevenspunten
De telemetriefunctie verzamelt geen persoonlijke gegevens, zoals gebruikersnamen of e-mailadressen. Uw code wordt niet gescand en er worden geen gegevens op projectniveau geëxtraheerd, zoals naam, opslagplaats of auteur. De inhoud van eventuele gegevensbestanden die worden geopend of gemaakt door uw apps, geheugen-dumps van objecten die worden bezet door uw apps, of de inhoud van het klembord, wordt niet geëxtraheerd. De gegevens worden veilig naar Microsoft-servers verzonden met behulp van Azure Monitor--technologie, onder beperkte toegang en gepubliceerd onder strikte beveiligingscontroles van beveiligde Azure Storage--systemen.
Het beschermen van uw privacy is belangrijk voor ons. Als u vermoedt dat de telemetrie gevoelige gegevens verzamelt of dat de gegevens onveilig of onjuist worden verwerkt, kunt u een probleem indienen in de dotnet/sdk-opslagplaats opslagplaats of een e-mail verzenden naar dotnet@microsoft.com voor onderzoek.
De telemetriefunctie verzamelt de volgende gegevens:
SDK-versies
Gegevens
Alle
Tijdstempel van aanroep.
Alle
Commando aangeroepen (bijvoorbeeld 'build'), gehasht vanaf versie 2.1.
Alle
Drie octet-IP-adres dat wordt gebruikt om de geografische locatie te bepalen.
Alle
Besturingssysteem en versie.
Alle
Runtime-id (RID) waarop de SDK wordt uitgevoerd.
Alle
.NET SDK-versie.
Alle
Telemetrieprofiel: een optionele waarde die alleen wordt gebruikt met expliciete aanmelding door gebruikers en intern wordt gebruikt bij Microsoft.
>=2,0
Opdrachtargumenten en -opties: verschillende argumenten en opties worden verzameld (geen willekeurige tekenreeksen). Zie verzamelde opties. Gehasht na 2.1.300.
>=2,0
Of de SDK wordt uitgevoerd in een container.
>=2,0
Doelframeworks (vanaf de TargetFramework gebeurtenis), gehasht vanaf 2.1.
>=2,0
Gehasht Media Access Control (MAC)-adres (SHA256).
>=2,0
De huidige werkmap is gehasht.
>=2,0
Succesrapport installatie, met de gehashte bestandsnaam van de installer-exe.
>=2.1.300
Kernelversie.
>=2.1.300
Libc uitgave/versie.
>=3,0,100
Of de uitvoer is omgeleid (waar of onwaar).
>=3,0,100
Bij een CLI/SDK-crash worden het uitzonderingstype en de bijbehorende stack-tracering (alleen CLI/SDK-code is opgenomen in de stacktracering die is verzonden). Zie Telemetrie van crashuitzonderingvoor meer informatie.
>=5,0,100
Hashed TargetFrameworkVersion gebruikt voor build (MSBuild-eigenschap)
>=5,0,100
Hashed RuntimeIdentifier gebruikt voor build (MSBuild-eigenschap)
>=5,0,100
Hashed SelfContained gebruikt bij het buildproces (MSBuild-eigenschap)
>=5,0,100
Hashed UseApphost gebruikt bij het bouwen (MSBuild-eigenschap)
>=5,0,100
Hashed OutputType gebruikt voor build (MSBuild-eigenschap)
>=5,0.201
Hashed PublishReadyToRun wordt gebruikt voor het bouwen (MSBuild-eigenschap)
>=5,0.201
Hashed PublishTrimmed gebruikt voor build (MSBuild-eigenschap)
>=5,0.201
Hashed PublishSingleFile gebruikt voor build (MSBuild-eigenschap)
>=5,0,202
Verstreken tijd vanaf het begin van het proces tot het invoeren van de hoofdmethode van het CLI-programma, waarbij de opstarttijd van de host en runtime wordt gemeten.
>=5,0,202
Verstreken tijd voor de stap die .NET Tools toevoegt aan het pad tijdens de eerste uitvoering.
>=5,0,202
Verstreken tijd om de melding voor eerste keer gebruik weer te geven bij de eerste start.
>=5,0,202
Verstreken tijd voor het genereren van ASP.NET Certificaat tijdens de eerste uitvoering.
>=5,0,202
Verstreken tijd om de CLI-invoer te parseren.
>=6.0.100
Architectuur van het besturingssysteem
>=6,0,104
Hashed PublishReadyToRunUseCrossgen2 gebruikt voor build (MSBuild-eigenschap)
>=6,0,104
Voor de build gebruikte Hashed Crossgen2PackVersion (MSBuild-eigenschap)
>=6,0,104
Hashed CompileListCount gebruikt voor de bouw (MSBuild-eigenschap)
>=6,0,104
Gehashte _ReadyToRunCompilationFailures gebruikt voor bouwen (MSBuild-eigenschap)
>=6.0.300
Als de CLI is aangeroepen vanuit een omgeving voor continue integratie. Zie Continue integratiedetectievoor meer informatie.
>=7,0,100
Hashed PublishAot gebruikt voor het bouwen (MSBuild-eigenschap)
>=7,0.100
Hashed PublishProtocol gebruikt voor build (MSBuild-eigenschap)
>=8.0.100
Hashed TargetPlatformIdentifier gebruikt voor build (MSBuild-eigenschap)
>=8.0.100
Hashed HybridGlobalization gebruikt voor build (MSBuild-eigenschap)
>=8.0.100
Of .NET Blazor WebAssembly SDK wordt gebruikt.
>=8.0.100
Of .NET WebAssembly SDK wordt gebruikt.
>=8,0,100
Of .NET MAUI wordt gebruikt.
>=8,0,100
Of .NET Mobile SDK wordt gebruikt.
>=8.0.100
Of andere mobiele SDK's worden gebruikt (zoals Avalonia, Uno).
>=8,0,100
Of Mono AOT wordt gebruikt.
>=8,0,100
Of de Mono AOT strip IL-functie wordt gebruikt.
>=8.0.100
Of mono-interpreter wordt gebruikt.
>=8.0.100
Of de bibliotheekmodus voor mobiel wordt gebruikt.
>=8.0.100
Of NativeAOT wordt gebruikt.
>=8,0,100
De gebruikte versie van het Mono runtime-pakket.
Verzamelde opties
Bepaalde opdrachten verzenden extra gegevens. Een subset van opdrachten verzendt het eerste argument:
Bevelen
Eerste argumentgegevens verzonden
dotnet help <arg>
Er wordt hulp aangevraagd voor het commando.
dotnet new <arg>
De sjabloonnaam (gehasht).
dotnet add <arg>
Het woord package of reference.
dotnet remove <arg>
Het woord package of reference.
dotnet list <arg>
Het woord package of reference.
dotnet sln <arg>
Het woord add, listof remove.
dotnet nuget <arg>
Het woord delete, localsof push.
dotnet workload <subcommand> <arg>
Het woord install, update, list, search, uninstall, repair, restore en de naam van de werkbelasting (gehasht).
dotnet tool <subcommand> <arg>
Het woord install, update, list, search, uninstall, run en de naam van de .NET-tool (gehasht).
Met een subset van opdrachten worden geselecteerde opties verzonden als ze worden gebruikt, samen met de waarden:
Optie
Opdrachten
--verbosity
Alle opdrachten
--language
dotnet new
--configuration
dotnet build, dotnet clean, dotnet publish, dotnet run, dotnet test
Wanneer de SDK een ingebouwde opdracht niet kan oplossen, verzendt een opdrachtomzetting die de opdracht heeft omgezet een hash van de opdrachtnaam samen met de naam van het opdrachtomzettingstype.
Met uitzondering van --verbosity en --sdk-package-versionworden alle andere waarden gehasht vanaf .NET Core 2.1.100 SDK.
Telemetrie van sjabloonverwerkingsmotor
Met de opdracht dotnet new sjabloon instantiëring worden aanvullende gegevens verzameld voor door Microsoft geschreven sjablonen, te beginnen met .NET Core 2.1.100 SDK:
--framework
--auth
Telemetrie van crashuitzondering
Als de .NET CLI/SDK vastloopt, verzamelt deze de naam van de uitzondering en stacktracering van de CLI/SDK-code. Deze informatie wordt verzameld om problemen te beoordelen en de kwaliteit van de .NET SDK en CLI te verbeteren. Dit artikel bevat informatie over de gegevens die we verzamelen. Het biedt ook tips over hoe gebruikers hun eigen versie van de .NET SDK bouwen, onbedoelde openbaarmaking van persoonlijke of gevoelige informatie kunnen voorkomen.
De .NET CLI verzamelt alleen informatie voor CLI/SDK-uitzonderingen, niet uitzonderingen in uw toepassing. De verzamelde gegevens bevatten de naam van de uitzondering en de stack-trace. Deze stack-trace is van CLI/SDK-code.
In het volgende voorbeeld ziet u het soort gegevens dat wordt verzameld:
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)
Detectie van continue integratie
Om te detecteren of de .NET CLI wordt uitgevoerd in een omgeving voor continue integratie, test de .NET CLI op de aanwezigheid en waarden van verschillende bekende omgevingsvariabelen die door algemene CI-providers zijn ingesteld.
Hieronder ziet u de volledige lijst met omgevingsvariabelen en wat er met hun waarden gebeurt. In elk geval wordt de waarde van de omgevingsvariabele nooit verzameld, alleen gebruikt om een booleaanse vlag in te stellen.
Variabele(en)
Aanbieder
Actie
TF_BUILD
Azure Pipelines
Booleaanse waarde parseren
GITHUB_ACTIONS
GitHub Actions
Booleaanse waarde parseren
APPVEYOR
Appveyor
Booleaanse waarde parseren
CI
Veel/meest
Booleaanse waarde parseren
TRAVIS
Travis CI
Booleaanse waarde parseren
CIRCLECI
Cirkel-CI
Booleaanse waarde parseren
CODEBUILD_BUILD_ID, AWS_REGION
Amazon Web Services CodeBuild
Controleren of alle aanwezig en niet null zijn
BUILD_ID, BUILD_URL
Jenkins
Controleren of alle aanwezig en niet null zijn
BUILD_ID, PROJECT_ID
Google Cloud Build
Controleren of alle aanwezig en niet null zijn
TEAMCITY_VERSION
TeamCity
Controleren of aanwezig en niet null zijn
JB_SPACE_API_URL
JetBrains Space
Controleren of aanwezig en niet null zijn
Onbedoelde openbaarmaking van informatie voorkomen
.NET-inzenders en iedereen die een versie van de .NET SDK uitvoert die ze zelf hebben gebouwd, moet rekening houden met het pad naar de SDK-broncode. Als er een crash optreedt tijdens het gebruik van een .NET SDK die een aangepaste build voor foutopsporing is of is geconfigureerd met aangepaste build-symboolbestanden, wordt het pad naar het SDK-bronbestand van de buildcomputer verzameld als onderdeel van de stacktracering en wordt deze niet gehasht.
Daarom mogen aangepaste builds van de .NET SDK zich niet in mappen bevinden waarvan padnamen persoonlijke of gevoelige informatie beschikbaar maken.
De bron voor deze inhoud vindt u op GitHub, waar u ook problemen en pull-aanvragen kunt maken en controleren. Bekijk onze gids voor inzenders voor meer informatie.
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven:
In deze module leert u hoe u telemetrie gebruikt om het gedrag van een cloudeigen toepassing vast te leggen en hoe de .NET Aspire-stack het eenvoudiger maakt om gegevens op te slaan en later weer te geven.