Telemetri .NET SDK dan .NET CLI
.NET SDK menyertakan fitur telemetri yang mengumpulkan data penggunaan dan mengirimkannya ke Microsoft saat Anda menggunakan perintah .NET CLI. Data penggunaan mencakup informasi pengecualian saat .NET CLI crash. .NET CLI dilengkapi dengan .NET SDK dan merupakan kumpulan kata kerja yang memungkinkan Anda membangun, menguji, dan menerbitkan aplikasi .NET Anda. Data telemetri membantu tim .NET memahami bagaimana alat digunakan sehingga dapat ditingkatkan. Informasi tentang kegagalan membantu tim menyelesaikan masalah dan memperbaiki bug.
Data yang dikumpulkan diterbitkan secara agregat di bawah Lisensi Atribusi Creative Commons. Beberapa data yang dikumpulkan diterbitkan di .NET CLI Telemetry Data.
Cakupan
dotnet
memiliki dua fungsi: untuk menjalankan aplikasi dan menjalankan perintah CLI. Telemetri tidak dikumpulkan saat menggunakan dotnet
untuk memulai aplikasi dalam format berikut:
dotnet [path-to-app].dll
Telemetri dikumpulkan saat menggunakan salah satu 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 DOTNET_CLI_TELEMETRY_OPTOUT
variabel lingkungan ke 1
atau true
.
Entri telemetri tunggal juga dikirim oleh penginstal .NET SDK ketika penginstalan yang berhasil terjadi. Untuk menolak, atur variabel lingkungan DOTNET_CLI_TELEMETRY_OPTOUT
sebelum Anda menginstal .NET SDK.
Penting
Untuk menolak setelah Anda memulai alat 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 saat Anda pertama kali menjalankan salah satu perintah .NET CLI (misalnya, dotnet build
). Teks mungkin sedikit berbeda tergantung pada versi SDK yang Anda jalankan. Pengalaman "eksekusi 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 penolakan telemetri.
Poin 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 Azure Monitor, disimpan di bawah akses terbatas, dan diterbitkan di bawah kontrol keamanan yang ketat dari sistem Azure Storage yang aman.
Melindungi privasi Anda sangat penting bagi kami. Jika Anda menduga telemetri mengumpulkan data sensitif atau data tidak aman atau tidak pantas ditangani, ajukan masalah di repositori dotnet/sdk atau kirim email ke dotnet@microsoft.com untuk penyelidikan.
Fitur telemetri mengumpulkan data berikut:
Versi SDK | Data |
---|---|
Semua | Stempel waktu pemanggilan. |
Semua | Perintah dipanggil (misalnya, "build"), di-hash mulai dari 2.1. |
Semua | Tiga alamat IP oktet yang digunakan untuk menentukan lokasi geografis. |
Semua | Sistem operasi dan versi. |
Semua | ID runtime bahasa umum (RID) yang dijalankan SDK. |
Semua | Versi SDK .NET. |
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. Di-hash setelah 2.1.300. |
>=2.0 | Apakah SDK berjalan dalam kontainer atau tidak. |
>=2.0 | Kerangka kerja target (dari peristiwa TargetFramework ), di-hash mulai dari 2.1. |
>=2.0 | Media Access Control (MAC) alamat (SHA256) di-hash. |
>=2.0 | Direktori kerja saat ini di-hash. |
>=2.0 | Instal laporan keberhasilan, dengan nama file exe alat penginstal yang di-hash. |
>=2.1.300 | Versi kernel. |
>=2.1.300 | Rilis/versi Libc. |
>=3.0.100 | Apakah output dialihkan atau tidak (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 digunakan untuk build di-hash (properti MSBuild) |
>=5.0.100 | RuntimeIdentifier yang digunakan untuk build di-hash (properti MSBuild) |
>=5.0.100 | SelfContained yang digunakan untuk build di-hash (properti MSBuild) |
>=5.0.100 | UseApphost yang digunakan untuk build di-hash (properti MSBuild) |
>=5.0.100 | Hashed OutputType digunakan untuk build (properti MSBuild) |
>=5.0.201 | PublishReadyToRun yang digunakan untuk build di-hash (properti MSBuild) |
>=5.0.201 | PublishTrimmed digunakan untuk build di-hash (properti MSBuild) |
>=5.0.201 | PublishSingleFile digunakan untuk build di-hash (properti MSBuild) |
>=5.0.202 | Waktu yang berlalu sejak proses dimulai hingga memasuki metode utama program CLI, mengukur host dan startup 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 eksekusi pertama. |
>=5.0.202 | Waktu yang berlalu untuk membuat Sertifikat ASP.NET pada eksekusi pertama. |
>=5.0.202 | Waktu yang berlalu untuk mengurai input CLI. |
>=6.0.100 | Arsitektur OS |
>=6.0.104 | PublishReadyToRunUseCrossgen2 digunakan untuk build di-hash (properti MSBuild) |
>=6.0.104 | Crossgen2PackVersion yang digunakan untuk build di-hash (properti MSBuild) |
>=6.0.104 | CompileListCount Hash yang digunakan untuk build (properti MSBuild) |
>=6.0.104 | _ReadyToRunCompilationFailures used for build di-hash (MSBuild property) |
>=6.0.300 | Jika CLI dipanggil dari lingkungan Integrasi Berkelanjutan. Untuk informasi selengkapnya, lihat Deteksi Integrasi Berkelanjutan. |
>=7.0.100 | PublishAot digunakan untuk build di-hash (properti MSBuild) |
>=7.0.100 | Hashed PublishProtocol digunakan untuk build (properti MSBuild) |
>=8.0.100 | Hashed TargetPlatformIdentifier yang digunakan untuk build (properti MSBuild) |
>=8.0.100 | Hashed HybridGlobalization yang digunakan untuk build (properti 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 IL strip 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 dikirim |
---|---|
dotnet help <arg> |
Bantuan perintah sedang dikueri. |
dotnet new <arg> |
Nama templat (di-hash). |
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:
Opsi | 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 |
Kecuali untuk --verbosity
dan --sdk-package-version
, semua nilai lainnya di-hash dimulai dengan .NET Core 2.1.100 SDK.
Telemetri mesin templat
dotnet new
Perintah instansiasi templat mengumpulkan data tambahan untuk templat yang ditulis Microsoft, dimulai dengan .NET Core 2.1.100 SDK:
--framework
--auth
Telemetri pengecualian crash
Jika .NET CLI/SDK mengalami crash, ia mengumpulkan nama pengecualian dan jejak tumpukan kode CLI/SDK. Informasi ini dikumpulkan untuk menilai masalah dan meningkatkan kualitas .NET SDK dan CLI. Artikel ini memberikan 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 hanya mengumpulkan informasi untuk pengecualian CLI/SDK, bukan pengecualian dalam aplikasi Anda. Data yang dikumpulkan berisi nama pengecualian dan jejak tumpukan. Jejak tumpukan ini adalah 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 CLI .NET 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.
Variable | Penyedia | Perbuatan |
---|---|---|
TF_BUILD | Azure Pipelines | Mengurai nilai Boolean |
GITHUB_ACTIONS | GitHub Actions | Mengurai nilai Boolean |
APPVEYOR | Appveyor | Mengurai nilai Boolean |
CI | Banyak/Paling Banyak | Mengurai nilai Boolean |
TRAVIS | Travis CI | Mengurai nilai Boolean |
CIRCLECI | Lingkaran CI | Mengurai nilai Boolean |
CODEBUILD_BUILD_ID, AWS_REGION | Amazon Web Services CodeBuild | Periksa apakah semua ada dan non-null |
BUILD_ID, BUILD_URL | Jenkins | Periksa apakah semua ada dan non-null |
BUILD_ID, PROJECT_ID | Google Cloud Build | Periksa apakah semua ada dan non-null |
TEAMCITY_VERSION | TeamCity | Periksa apakah ada dan non-null |
JB_SPACE_API_URL | JetBrains Space | 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 build debug kustom atau dikonfigurasi dengan file simbol build kustom, jalur file sumber SDK dari komputer build dikumpulkan sebagai bagian dari jejak tumpukan dan tidak di-hash.
Karena itu, build kustom .NET SDK tidak boleh terletak di direktori yang nama jalurnya mengekspos informasi pribadi atau sensitif.