Telemetri .NET SDK dan .NET CLI
Data yang dikumpulkan diterbitkan secara agregat di bawah Lisensi Atribusi Creative Commons . Beberapa data yang dikumpulkan diterbitkan di .NET CLI Telemetry Data.
Ruang lingkup
dotnet
memiliki dua fungsi: untuk menjalankan aplikasi dan menjalankan perintah CLI. Telemetri tidak dikumpulkan ketika menggunakan dotnet
untuk memulai aplikasi dalam format berikut:
dotnet [path-to-app].dll
Telemetri dikumpulkan saat menggunakan salah satu dari perintah .NET CLI, seperti:
dotnet build
dotnet pack
dotnet run
Cara menolak
Fitur telemetri .NET SDK diaktifkan secara default untuk distribusi Microsoft SDK. Untuk menolak fitur telemetri, atur variabel lingkungan DOTNET_CLI_TELEMETRY_OPTOUT
ke 1
atau true
.
Entri telemetri tunggal juga dikirim oleh penginstal .NET SDK saat penginstalan berhasil terjadi. Untuk menolak, atur variabel lingkungan DOTNET_CLI_TELEMETRY_OPTOUT
sebelum Anda menginstal .NET SDK.
Penting
Untuk memilih keluar setelah Anda memulai penginstal: tutup alat penginstal, atur variabel lingkungan, lalu jalankan alat penginstal lagi dengan set nilai tersebut.
Pengungkapan
.NET SDK menampilkan teks yang mirip dengan yang berikut ini ketika Anda pertama kali menjalankan salah satu perintah .NET CLI (misalnya, dotnet build
). Teks mungkin sedikit bervariasi tergantung pada versi SDK yang Anda jalankan. Pengalaman "penggunaan pertama" ini adalah bagaimana Microsoft memberi tahu Anda tentang pengumpulan data.
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
Untuk menonaktifkan pesan ini dan pesan selamat datang .NET, atur variabel lingkungan DOTNET_NOLOGO
ke true
. Perhatikan bahwa variabel ini tidak berpengaruh pada opsi keluar dari telemetri.
Titik data
Fitur telemetri tidak mengumpulkan data pribadi, seperti nama pengguna atau alamat email. Ini tidak memindai kode Anda dan tidak mengekstrak data tingkat proyek, seperti nama, repositori, atau penulis. Ini tidak mengekstrak konten file data apa pun yang diakses atau dibuat oleh aplikasi Anda, cadangan memori apa pun yang ditempati oleh objek aplikasi Anda, atau konten clipboard. Data dikirim dengan aman ke server Microsoft menggunakan teknologi
Melindungi privasi Anda penting untuk kami. Jika Anda menduga telemetri mengumpulkan data sensitif atau data tidak aman atau tidak pantas ditangani, ajukan masalah di repositori dotnet/sdk
Fitur telemetri mengumpulkan data berikut:
Versi SDK | Data |
---|---|
Semua | Tanda waktu pemanggilan. |
Semua | Perintah yang dipanggil (misalnya, "build"), di-hash mulai dari 2.1. |
Semua | Tiga alamat IP oktet yang digunakan untuk menentukan lokasi geografis. |
Semua | Sistem dan versi operasi. |
Semua | ID Runtime (RID) tempat SDK berjalan. |
Semua | Versi .NET SDK. |
Semua | Profil telemetri: nilai opsional yang hanya digunakan dengan keikutsertaan pengguna eksplisit dan digunakan secara internal di Microsoft. |
>=2.0 | Argumen dan opsi perintah: beberapa argumen dan opsi dikumpulkan (bukan string arbitrer). Lihat opsi yang dikumpulkan . Telah di-hash setelah 2.1.300. |
>=2.0 | Apakah SDK berjalan dalam kontainer. |
>=2.0 | Kerangka kerja target (dari acara TargetFramework ), mulai di-hash dari versi 2.1. |
>=2.0 | Alamat Media Access Control (MAC) yang Telah Di-hash (SHA256). |
>=2.0 | Direktori kerja saat ini telah di-hash. |
>=2.0 | Laporan keberhasilan instalasi, dengan nama file exe penginstal yang di-hash. |
>=2.1.300 | Versi kernel. |
>=2.1.300 | Versi/rilis Libc. |
>=3.0.100 | Apakah output dialihkan (benar atau salah). |
>=3.0.100 | Pada crash CLI/SDK, jenis pengecualian dan jejak tumpukannya (hanya kode CLI/SDK yang disertakan dalam jejak tumpukan yang dikirim). Untuk informasi selengkapnya, lihat telemetri pengecualian Crash . |
>=5.0.100 | TargetFrameworkVersion yang telah di-hash digunakan untuk build (properti MSBuild) |
>=5.0.100 | Hashed RuntimeIdentifier yang digunakan untuk proses build (properti dari MSBuild) |
>=5.0.100 | Hashed SelfContained digunakan untuk kompilasi (properti MSBuild) |
>=5.0.100 | Hashed UseApphost digunakan untuk build (properti MSBuild) |
>=5.0.100 | OutputType yang telah di-hash digunakan untuk build (properti MSBuild) |
>=5.0.201 | Hashed PublishReadyToRun digunakan untuk pembangunan (properti MSBuild) |
>=5.0.201 | Hashed PublishTrimmed digunakan untuk build (properti MSBuild) |
>=5.0.201 | Hashed PublishSingleFile digunakan dalam proses build (properti MSBuild) |
>=5.0.202 | Waktu yang berlalu dari awal proses hingga masuk ke metode utama program CLI, mengukur waktu startup host dan runtime. |
>=5.0.202 | Waktu yang berlalu untuk langkah yang menambahkan Alat .NET ke jalur pada eksekusi pertama. |
>=5.0.202 | Waktu yang berlalu untuk menampilkan pemberitahuan penggunaan pertama kali pada saat dijalankan untuk pertama kali. |
>=5.0.202 | Waktu yang berlalu untuk pembuatan Sertifikat ASP.NET saat pertama kali dijalankan. |
>=5.0.202 | Waktu yang dibutuhkan untuk mengurai input CLI. |
>=6.0.100 | Arsitektur Sistem Operasi |
>=6.0.104 | PublishReadyToRunUseCrossgen2 yang sudah di-hash digunakan untuk build (properti MSBuild) |
>=6.0.104 | Versi Hashed Crossgen2Pack digunakan untuk build (properti MSBuild) |
>=6.0.104 | "Hashed CompileListCount" digunakan untuk build (properti MSBuild) |
>=6.0.104 | Hashed _ReadyToRunCompilationFailures digunakan dalam proses build (properti MSBuild) |
>=6.0.300 | Jika CLI dipanggil dari lingkungan Integrasi Kontinu. Untuk informasi selengkapnya, lihat Deteksi Integrasi Berkelanjutan. |
>=7.0.100 | Properti MSBuild 'Hashed PublishAot' digunakan untuk build |
>=7.0.100 | Protokol Publikasi Hashed digunakan untuk build (properti MSBuild) |
>=8.0.100 | TargetPlatformIdentifier yang telah di-hash digunakan untuk build (properti MSBuild) |
>=8.0.100 | Hashed HybridGlobalization yang digunakan untuk pembangunan (properti dalam MSBuild) |
>=8.0.100 | Apakah .NET Blazor WebAssembly SDK digunakan. |
>=8.0.100 | Apakah .NET WebAssembly SDK digunakan. |
>=8.0.100 | Apakah .NET MAUI digunakan. |
>=8.0.100 | Apakah .NET mobile SDK digunakan. |
>=8.0.100 | Apakah SDK seluler lainnya digunakan (seperti: Avalonia, Uno). |
>=8.0.100 | Apakah Mono AOT digunakan. |
>=8.0.100 | Apakah fitur strip IL pada framework Mono AOT digunakan? |
>=8.0.100 | Apakah interpreter Mono digunakan. |
>=8.0.100 | Apakah mode pustaka untuk seluler digunakan. |
>=8.0.100 | Apakah NativeAOT digunakan. |
>=8.0.100 | Versi paket runtime Mono yang digunakan. |
Opsi yang dikumpulkan
Perintah tertentu mengirim data tambahan. Subset perintah mengirimkan argumen pertama:
Perintah | Data argumen pertama yang dikirim |
---|---|
dotnet help <arg> |
Bantuan perintah sedang dicari. |
dotnet new <arg> |
Nama templat (diproteksi dengan hashing). |
dotnet add <arg> |
Kata package atau reference . |
dotnet remove <arg> |
Kata package atau reference . |
dotnet list <arg> |
Kata package atau reference . |
dotnet sln <arg> |
Kata add , list , atau remove . |
dotnet nuget <arg> |
Kata delete , locals , atau push . |
dotnet workload <subcommand> <arg> |
Kata install , update , list , search , uninstall , repair , restore dan nama beban kerja (di-hash). |
dotnet tool <subcommand> <arg> |
Kata install , update , list , search , uninstall , run dan nama alat dotnet (di-hash). |
Subset perintah mengirimkan opsi yang dipilih jika digunakan, bersama dengan nilainya:
Pilihan | Perintah |
---|---|
--verbosity |
Semua perintah |
--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 |
Ketika SDK gagal menyelesaikan perintah bawaan, pemecah masalah perintah apa pun yang berhasil menyelesaikan perintah mengirimkan hash nama perintah bersama dengan nama jenis pemecah masalah perintah.
Kecuali untuk --verbosity
dan --sdk-package-version
, semua nilai lainnya di-hash dimulai dengan .NET Core 2.1.100 SDK.
Telemetri mesin templat
Perintah instansiasi templat dotnet new
mengumpulkan data tambahan untuk templat yang ditulis Microsoft, dimulai dengan .NET Core 2.1.100 SDK:
--framework
--auth
Telemetri pengecualian kerusakan
Jika .NET CLI/SDK mengalami crash, akan mengumpulkan nama pengecualian dan jejak tumpukan dari kode CLI/SDK tersebut. Informasi ini dikumpulkan untuk menilai masalah dan meningkatkan kualitas .NET SDK dan CLI. Artikel ini menyediakan informasi tentang data yang kami kumpulkan. Ini juga memberikan tips tentang bagaimana pengguna membangun versi mereka sendiri dari .NET SDK dapat menghindari pengungkapan informasi pribadi atau sensitif yang tidak disengaja.
.NET CLI mengumpulkan informasi hanya untuk pengecualian CLI/SDK, bukan pengecualian dalam aplikasi Anda. Data yang dikumpulkan berisi nama pengecualian dan jejak tumpukan. Jejak tumpukan ini berasal dari kode CLI/SDK.
Contoh berikut menunjukkan jenis data yang dikumpulkan:
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)
Deteksi Integrasi Berkelanjutan
Untuk mendeteksi apakah .NET CLI berjalan di lingkungan Integrasi Berkelanjutan, .NET CLI memeriksa keberadaan dan nilai beberapa variabel lingkungan terkenal yang ditetapkan penyedia CI umum.
Daftar lengkap variabel lingkungan, dan apa yang dilakukan dengan nilainya, ditunjukkan di bawah ini. Perhatikan bahwa dalam setiap kasus, nilai variabel lingkungan tidak pernah dikumpulkan, hanya digunakan untuk mengatur bendera boolean.
Variabel | Penyedia | Perbuatan |
---|---|---|
TF_BUILD | Azure Pipelines | Mengurai nilai boolean |
GITHUB_ACTIONS | Tindakan GitHub | Mengurai nilai boolean |
APPVEYOR | Appveyor | Mengurai nilai boolean |
CI | Banyak/Paling Banyak | Mengurai nilai boolean |
TRAVIS | Travis CI | Mengurai nilai boolean |
CIRCLECI | Ci Lingkaran | Mengurai nilai boolean |
CODEBUILD_BUILD_ID, AWS_REGION | Amazon Web Services CodeBuild | Periksa apakah semua ada dan tidak kosong |
BUILD_ID, BUILD_URL | Jenkins | Periksa apakah semua ada dan tidak kosong |
ID_BANGUN, ID_PROYEK | Google Cloud Build | Periksa apakah semua ada dan tidak kosong |
TEAMCITY_VERSION | TeamCity | Periksa apakah ada dan non-null |
JB_SPACE_API_URL | Ruang JetBrains | Periksa apakah ada dan non-null |
Hindari pengungkapan informasi yang tidak disengaja
Kontributor .NET dan siapa pun yang menjalankan versi .NET SDK yang mereka bangun sendiri harus mempertimbangkan jalur ke kode sumber SDK mereka. Jika crash terjadi saat menggunakan .NET SDK yang merupakan debug build kustom atau dikonfigurasi dengan file simbol build kustom, path file sumber SDK dari mesin build dikumpulkan sebagai bagian dari pelacakan tumpukan dan tidak di-hash.
Karena itu, build kustom .NET SDK tidak boleh berada di direktori yang nama jalurnya mengekspos informasi pribadi atau sensitif.
Lihat juga
- .NET CLI telemetri data
- Referensi sumber Telemetri (repositori dotnet/sdk)