Aracılığıyla paylaş


.NET SDK ve .NET CLI telemetrisi

.NET SDK, kullanım verilerini toplayan ve .NET CLI komutlarını kullandığınızda bunu Microsoft'a gönderen bir telemetri özelliği içerir. .NET CLI çöktüğünde kullanım verileri istisna bilgilerini içerir. .NET CLI, .NET SDK ile birlikte gelir ve .NET uygulamalarınızı derlemenizi, test etmenizi ve yayımlamanızı sağlayan fiil kümesidir. Telemetri verileri, .NET ekibinin araçların nasıl kullanıldığını anlamasına yardımcı olur ve böylece iyileştirilebilir. Hatalarla ilgili bilgiler, ekibin sorunları çözmesine ve hataları düzeltmesine yardımcı olur.

Toplanan veriler, Creative Commons Attribution Lisansıaltında toplu olarak yayımlanır. Toplanan verilerin bazıları .NET CLI Telemetri Verilerikonumunda yayımlanır.

Kapsam

dotnet iki işlevi vardır: uygulamaları çalıştırmak ve CLI komutlarını yürütmek. Bir uygulamayı aşağıdaki biçimde başlatmak için kullanılırken telemetri dotnet toplanmaz:

  • dotnet [path-to-app].dll

Telemetri ,gibi .NET CLI komutlarından herhangi biri kullanılırken toplanır:

  • dotnet build
  • dotnet pack
  • dotnet run

Abonelikten Çıkma Yolu

.NET SDK telemetri özelliği, SDK'nın Microsoft dağıtımları için varsayılan olarak etkindir. Telemetri özelliğini geri çevirmek için DOTNET_CLI_TELEMETRY_OPTOUT ortam değişkenini 1 veya trueolarak ayarlayın.

Başarılı bir yükleme gerçekleştiğinde .NET SDK yükleyicisi tek bir telemetri girdisi gönderir. .NET SDK'sını yüklemeden önce devre dışı bırakmak için DOTNET_CLI_TELEMETRY_OPTOUT ortam değişkenini ayarlayın.

Önemli

Yükleyiciyi başlattıktan sonra geri çevirmek için: Yükleyiciyi kapatın, ortam değişkenini ayarlayın ve ardından yükleyiciyi bu değer kümesiyle yeniden çalıştırın.

Açıklama

.NET SDK'sı, .NET CLI komutlarından birini ilk kez çalıştırdığınızda (örneğin, dotnet build) aşağıdaki çıktıya benzer bir metin görüntüler. Metin, çalıştırdığınız SDK sürümüne bağlı olarak biraz farklılık gösterebilir. Bu "ilk kullanım" deneyimi, Microsoft'un veri toplama hakkında sizi bilgilendirme şeklidir.

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

Bu iletiyi ve .NET karşılama iletisini devre dışı bırakmak için DOTNET_NOLOGO ortam değişkenini trueolarak ayarlayın. Bu değişkenin telemetriyi devre dışı bırakma üzerinde hiçbir etkisi yoktur.

Uyarı

Uyumsuzluk yaratan değişiklik: .NET SDK'sının son sürümlerinde stderr yazılmış olan telemetri iletilerinin davranışı değiştirildi. Daha fazla bilgi için bkz. dotnet CLI komutları komutla ilgili olmayan verileri stderr'a kaydeder.

Veri noktaları

Telemetri özelliği, kullanıcı adları veya e-posta adresleri gibi kişisel verileri toplamaz. Kodunuzu taramaz ve ad, depo veya yazar gibi proje düzeyinde verileri ayıklamaz. Uygulamalarınız tarafından erişilen veya oluşturulan veri dosyalarının içeriğini, uygulamalarınızın nesneleri tarafından kaplanmış bellek dökümlerini veya panonun içeriğini ayıklamaz. Veriler , Azure İzleyici teknolojisi kullanılarak Microsoft sunucularına güvenli bir şekilde gönderilir. Veriler kısıtlı erişim altında tutulur ve güvenli Azure Depolama sistemlerinden sıkı güvenlik denetimleri altında yayımlanır.

Gizliliğinizin korunması Microsoft için önemlidir. Telemetrinin hassas verileri topladığını veya verilerin güvenli olmayan veya uygunsuz şekilde işlendiğinden şüpheleniyorsanız dotnet/sdk deposunda bir sorun oluşturun.

Toplanan gizlilik ve kişisel verileriniz hakkında daha fazla bilgi için bkz. Microsoft Gizlilik Bildirimi.

Aşağıdaki sekmelerde SDK sürümü tarafından yakalanan telemetri verileri gösterilir:

  • SDK sürüm 10.0.100 ve üzeri:
    • dotnet run için özetlenmiş proje tanımlayıcısı.
    • için dotnet rundosya tabanlı uygulama veya proje tabanlı uygulama türü.
    • Belirtilmişse dotnet run için başlatma profili adı.
    • dotnet run için bir başlatma profilinin belirtilip belirtilmediği.
    • için dotnet runkullanılan başlatma ayarları yapılandırma modeli (varsa) .
    • için dotnet runkullanılan SDK sayısı.
    • dotnet run için PaketReferanslarının sayısı.
    • dotnet run için ProjectReferences sayısı.
    • ile dotnet rundosya tabanlı uygulamalar için ek özelliklerin sayısı.
    • MSBuild'in ile dotnet rundosya tabanlı uygulamalar için kullanılıp kullanılmadığı.
    • Ile dotnet rundosya tabanlı uygulamalar için Roslyn derleyicisi kullanılıp kullanılmadığı.
    • Eğer CLI bir LLM ajanından çağrıldıysa, tespit edilen LLM ajanı adı. Daha fazla bilgi için bkz. LLM algılama.
    • Komut çağrıldığında global.json durumunu yakalar. Durum şu değerlerden biridir: not_found, geçerli, invalid_json veya invalid_data.
    • Görevleri yüklemek ve çalıştırmak (satır içi C# görevleri, çok iş parçacıklı görevler ve işlem dışı görevler dahil) için kullanılan MSBuild görev fabrikaları ve bu fabrikaların kaç görevi çalıştırdığı.
    • TaskHosts'ta yürütülen MSBuild görevlerinin sayısı ve TaskHosts'ta yürütülmeyen görevlerin sayısı.

Toplanan seçenekler

Bazı komutlar ek veri gönderir. Komutların bir alt kümesi ilk argümanı gönderir.

Komut İlk argüman verisi gönderildi.
dotnet help <arg> Komut yardımı isteniyor.
dotnet new <arg> Şablon adı (hash edilmiş)
dotnet add <arg> package veya referencesözcüğü.
dotnet remove <arg> package veya referencesözcüğü.
dotnet list <arg> package veya referencesözcüğü.
dotnet sln <arg> add, listveya removesözcüğü.
dotnet nuget <arg> delete, localsveya pushsözcüğü.
dotnet workload <subcommand> <arg> install, update, list, search, uninstall, repair, restore ve iş yükü adı (karma) sözcüğü.
dotnet tool <subcommand> <arg> install, update, list, search, uninstall, run ve dotnet araç adı (karma) sözcüğü.

Komutların bir alt kümesi, değerleriyle birlikte kullanıldıklarında seçili seçenekleri gönderir:

Seçenek Komutlar
--verbosity Tüm komutlar
--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

SDK yerleşik bir komutu çözümleyemediğinde, komutu başarıyla çözümleyen herhangi bir komut çözümleyicisi, komut çözümleyici türünün adıyla birlikte komut adının karması gönderir.

.NET Core 2.1.100 SDK sürümü ile birlikte, SDK c0 ve c1 hariç tüm bu değerleri karma olarak oluşturur.

Şablon motoru telemetrisi

.NET Core 2.1.100 SDK'sı ile başlayan şablon örneği oluşturma komutu, dotnet new Microsoft tarafından yazılan şablonlar için ek veriler toplar:

  • --framework
  • --auth

dotnet run telemetrisi

.NET SDK 10.0.100'den başlayarak komut, dotnet run dosya tabanlı uygulamaların geliştirilmesini ve kullanımını yönlendirmeye yardımcı olmak için özellik tabanlı telemetri toplar.

Tüm dotnet run yürütmeler için telemetri:

  • Uygulama türü (dosya tabanlı veya proje tabanlı)
  • Hashlenmiş proje veya dosya tanımlayıcısı
  • Kullanılan SDK sayısı
  • PackageReferences Sayısı
  • ProjectReferences Sayısı
  • Profil kullanımının başlatılması (c0 veya c1'in kullanılıp kullanılmadığı)
  • Başlatma profilinin varsayılan profil olup olmadığı
  • Varsa uygulanan ayarlar modelini başlatma

Yalnızca dosya tabanlı uygulamalar için telemetri:

  • Ek özelliklerin sayısı (örneğin, #:property yönergeler)
  • MSBuild'in derleme için kullanılıp kullanılmadığı
  • Roslyn derleyicisinin doğrudan kullanılıp kullanılmadığı

Kilitlenme istisna telemetrisi

.NET CLI veya SDK çökmesi durumunda, özel durumun adını ve CLI veya SDK kodunun yığın izlemesini toplar. .NET CLI, sorunları değerlendirmek ve .NET SDK ve CLI'nın kalitesini artırmak için bu bilgileri toplar.

.NET CLI, uygulamanızdaki özel durumlar için değil yalnızca CLI veya SDK özel durumları için bilgi toplar. Toplanan veriler özel durumun adını ve yığın izlemesini içerir. Bu yığın izlemesi CLI veya SDK koduna ait.

Aşağıdaki örnekte toplanan verilerin türü gösterilmektedir:

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)

.NET katkıda bulunanları ve kendi oluşturduğu .NET SDK'sının bir sürümünü çalıştıran diğer herkes SDK kaynak kodunun yolunu dikkate almalıdır. Özel hata ayıklama derlemesi veya özel derleme sembol dosyalarıyla yapılandırılmış bir .NET SDK'sı kullanılırken kilitlenme oluşursa, yığın izlemesi kapsamında derleme makinesindeki SDK kaynak dosya yolu toplanır ve şifrelenmez.

Bu nedenle, yol adları kişisel veya belirtilen bilgileri açığa çıkaran dizinlere .NET SDK'sının özel derlemelerini yerleştirmemelisiniz.

Sürekli entegrasyon algılama

.NET CLI'nın sürekli tümleştirme ortamında çalışıp çalışmadığını algılamak için .NET CLI, yaygın CI sağlayıcılarının ayarlandığı birçok iyi bilinen ortam değişkeninin varlığını ve değerlerini denetler.

Aşağıdaki listede ortam değişkenleri ve .NET CLI'nin değerlerini nasıl kullandığı gösterilmektedir. .NET CLI herhangi bir ortam değişkeninin değerini toplamaz; yalnızca boole bayrağı ayarlamak için değerini kullanır.

Değişkenler Sağlayıcı Eylem
TF_BUILD Azure İş Hatları Boole değerini ayrıştırma
GITHUB_ACTIONS GitHub İşlemleri Boole değerini ayrıştırma
APPVEYOR Uygulama Boole değerini ayrıştırma
CI Çok/En Çok Boole değerini ayrıştırma
TRAVIS Travis CI Boole değerini ayrıştırma
CIRCLECI Daire CI Boole değerini ayrıştırma
CODEBUILD_BUILD_ID, AWS_REGION Amazon Web Services CodeBuild Tümünün mevcut olup olmadığını ve null olmadığını denetleyin
BUILD_ID, BUILD_URL Jenkins Tümünün mevcut olup olmadığını ve null olmadığını denetleyin
BUILD_ID, PROJECT_ID Google Cloud Build Tümünün mevcut olup olmadığını ve null olmadığını denetleyin
TEAMCITY_VERSION TeamCity Mevcut olup olmadığını ve null olup olmadığını denetleyin
JB_SPACE_API_URL JetBrains Space Mevcut olup olmadığını ve null olup olmadığını denetleyin

LLM algılama

.NET CLI'nın bir LLM aracısı bağlamında çalışıp çalışmadığını algılamak için. .NET CLI, LLM aracılarının ve AI kodlama yardımcılarının ayarlandığı çeşitli ortam değişkenlerinin varlığını ve değerlerini denetler.

Aşağıdaki tabloda aracı adı, algılama için kullanılan ortam değişkeni ve bildirilen aracı türünün değeri gösterilmektedir. Bu ortam değişkenlerinin gerçek değerleri toplanmaz; bunlar yalnızca aracı türünü tanımlamak için kullanılır.

LLM ajanı Variable Değer
GitHub Copilot GITHUB_COPILOT_CLI_MODE yardımcı pilot
Claude Code CLAUDECODE claude
Cursor CURSOR_EDITOR "imleç"
Google Gemini GEMINI_CLI İkizler

.NET CLI birden çok aracı algılarsa, son değeri oluşturmak için farklı aracı değerlerini virgülle birleştirir.

Ayrıca bkz.