Aracılığıyla paylaş


Kod kapsamı EnableDynamicNativeInstrumentation varsayılan olarak false şeklinde ayarlanmıştır

dotnet test --collect:"Code Coverage" çalıştırıldığında, dinamik yerel araçlar varsayılan olarak devre dışı bırakılır. Bu değişiklik, kod kapsamının yerel koddan nasıl toplandığını etkiler. Kod kapsamının yönetilen koddan nasıl toplandığını etkilemez.

Sürüm kullanıma sunulmuştur

.NET 10 GA

Önceki davranış

Daha önce dinamik yerel enstrümantasyon varsayılan olarak etkinleştirildi ve statik yerel enstrümantasyon kullanılamadığında yerel modüller için bir yedekleme kullanılıyordu. Bu özellik Statik ve dinamik doğal enstrümentasyonda açıklanmıştır.

dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation was enabled by default

Yeni davranış

.NET 10'dan itibaren, dinamik yerel enstrümantasyon varsayılan olarak devre dışı bırakılmıştır. Bu seçenek varsayılan olarak <EnableDynamicNativeInstrumentation>false</EnableDynamicNativeInstrumentation> ve dotnet test'den ayarlanır. Bir runsettings dosyasındaki seçeneği açıkça ayarlarsanız, geçersiz kılınmaz.

dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation is now disabled by default

<EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation> ayarını runsettings dosyanızda yaparak dinamik yerel enstrümantasyonu yeniden etkinleştirebilirsiniz. Ancak bunu yaptığınızda , "covrun64.dll bulunamadığından kod yürütme devam edemiyor" hatasıyla başarısız olabilir. Bu hata 32 bitlik bir işlemde de oluşabilir covrun32.dll .

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Dinamik yerel izleme, geriye dönük uyumluluğu korumak için dotnet test içinde varsayılan olarak etkinleştirildi. Ancak, işleme DLL ekleme yöntemi standart değildir. .NET 10 çalışma zamanındaki güvenlik sağlamlaştırma değişiklikleriyle bağlantılı DLL'yi bulamayarak işlemin hatayla kilitlenmesine neden olur. Hata etkileşimli olmayan oturumlarda veya komut satırında görünmeyebilir, ancak işlem kilitleniyor.

Dinamik yerel enstrümantasyon varsayılan olarak dotnet-coverage tarafından zaten devre dışı bırakılmıştır. Bu, aynı temel araçları kullanarak kod kapsamını toplamanın alternatif bir yoludur. Ayrıca Visual Studio'da yerel projeleri olmayan çözümler için de varsayılan olarak devre dışı bırakılır.

Yerel bileşeni olmayan çözümlerle ilgili kapsam topluyorsanız etkilenmezsiniz. Kapsam toplarken performansın artığını fark edebilirsiniz.

C++ projeleri gibi yerel bileşenleri içeren çözümlerle ilgili kapsam toplarsanız, aşağıdaki seçenekleriniz vardır:

  • Projelerinizi statik yerel enstrümantasyon kullanacak şekilde yapılandırın

    OR

  • Microsoft.CodeCoverage 18.0.1'e güncelleştirin ve dinamik yerel enstrümantasyonu etkinleştirin.

    • Ayarı <EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation>runsettings dosyanıza ekleyin.
    • Ortam değişkenini ayarlayarak bu yeni varsayılandan genel olarak vazgeçin VSTEST_DISABLE_DYNAMICNATIVE_CODECOVERAGE_DEFAULT_SETTING=1 .

    Benzer şekilde, vstest.console kod kapsamı toplarken, .NET 10 SDK'nın kurulu olduğu sistemlerde dinamik yerel kapsamı başarıyla toplamak için VSTest sürüm 18.0.1 veya daha yenisi gereklidir.

Etkilenen API'ler

Yok.