Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menjalankan dotnet test --collect:"Code Coverage" sekarang menonaktifkan instrumentasi asli dinamis secara default. Perubahan ini memengaruhi bagaimana cakupan kode dikumpulkan dari kode asli. Ini tidak memengaruhi bagaimana cakupan kode dikumpulkan dari kode terkelola.
Versi yang diperkenalkan
.NET 10 GA
Perilaku sebelumnya
Sebelumnya, instrumentasi asli dinamis diaktifkan secara default dan menggunakan fallback untuk modul asli ketika instrumentasi asli statis tidak dapat digunakan. Perilaku ini dijelaskan dalam instrumentasi asli statis dan dinamis.
dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation was enabled by default
Perilaku baru
Mulai dari .NET 10, instrumentasi asli dinamis dinonaktifkan secara default. Opsi <EnableDynamicNativeInstrumentation>false</EnableDynamicNativeInstrumentation> diatur secara default dari dotnet test dan vstest. Jika Anda secara eksplisit mengatur opsi dalam file runsettings, maka opsi tersebut tidak akan ditimpa.
dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation is now disabled by default
Anda dapat mengaktifkan kembali instrumentasi asli dinamis dengan mengatur <EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation> dalam file runsettings Anda. Namun, ketika Anda melakukannya, itu mungkin gagal dengan "Eksekusi kode tidak dapat dilanjutkan karena covrun64.dll tidak ditemukan." Kesalahan ini juga dapat terjadi dalam covrun32.dll proses 32-bit.
Jenis perubahan yang memutus kompatibilitas
Perubahan ini adalah perubahan perilaku.
Alasan perubahan
Instrumentasi asli dinamis diaktifkan secara default untuk mempertahankan kompatibilitas mundur di dotnet test. Namun, caranya untuk menyuntikkan DLL ke dalam proses tidak standar. Dengan perubahan penguatan keamanan dalam runtime .NET 10, runtime gagal menemukan DLL yang ditautkan, menyebabkan proses mengalami kerusakan dengan kesalahan. Kesalahan mungkin tidak terlihat dalam sesi non-interaktif atau di baris perintah, tetapi prosesnya mengalami crash.
Instrumentasi asli dinamis sudah dinonaktifkan secara default oleh dotnet-coverage, sebagai cara alternatif untuk mengumpulkan cakupan kode menggunakan alat dasar yang sama. Ini juga dinonaktifkan secara default untuk solusi di Visual Studio yang tidak memiliki proyek asli.
Tindakan yang direkomendasikan
Jika Anda mengumpulkan cakupan pada solusi yang tidak memiliki komponen dalam negeri, Anda tidak akan terpengaruh. Namun, Anda mungkin mengamati peningkatan performa saat mengumpulkan cakupan.
Jika Anda mengumpulkan cakupan pada solusi yang menyertakan komponen asli, seperti proyek C++, Anda memiliki opsi berikut:
Mengonfigurasi proyek Anda untuk menggunakan instrumentasi asli statis
OR
Perbarui ke Microsoft.CodeCoverage 18.0.1 dan aktifkan instrumentasi asli dinamis:
- Tambahkan pengaturan
<EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation>ke file runsettings Anda. - Memilih keluar secara global dari default baru ini dengan mengatur
VSTEST_DISABLE_DYNAMICNATIVE_CODECOVERAGE_DEFAULT_SETTING=1variabel lingkungan.
Demikian pula, ketika mengumpulkan cakupan kode dengan
vstest.console, VSTest versi 18.0.1 dan yang lebih baru diperlukan untuk berhasil mengumpulkan cakupan asli dinamis pada sistem yang menginstal .NET 10 SDK.- Tambahkan pengaturan
API yang terpengaruh
Tidak ada.