Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Spuštění dotnet test --collect:"Code Coverage" teď ve výchozím nastavení zakáže dynamickou nativní instrumentaci. Tato změna ovlivňuje způsob shromažďování pokrytí kódu z nativního kódu. Nemá vliv na shromažďování pokrytí kódu ze spravovaného kódu.
Verze byla představena
Obecná dostupnost .NET 10 GA
Předchozí chování
Dříve byla ve výchozím nastavení povolena dynamická nativní instrumentace a pokud nebylo možné použít statickou nativní instrumentaci, používala se jako náhrada pro nativní moduly. Toto chování je popsáno ve statické a dynamické nativní instrumentaci.
dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation was enabled by default
Nové chování
Od verze .NET 10 je ve výchozím nastavení dynamická nativní instrumentace zakázaná. Možnost <EnableDynamicNativeInstrumentation>false</EnableDynamicNativeInstrumentation> je standardně nastavena z dotnet test a vstest. Pokud explicitně nastavíte možnost v souboru runsettings , nepřepíše se.
dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation is now disabled by default
Dynamickou nativní instrumentaci můžete znovu povolit nastavením <EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation> v souboru runsettings . Pokud to ale uděláte, může selhat s chybou "Spuštění kódu nemůže pokračovat, protože covrun64.dll nebyl nalezen.". K této chybě může dojít covrun32.dll také v 32bitovém procesu.
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Dynamická nativní instrumentace byla ve výchozím nastavení povolena pro zachování zpětné kompatibility v dotnet test. Způsob vkládání knihoven DLL do procesu ale není standardní. Při změnách tvrdšího zabezpečení v modulu runtime .NET 10 nelze najít připojenou knihovnu DLL, což způsobí pád procesu s chybou. Chyba nemusí být viditelná v neinteraktivních relacích nebo v příkazovém řádku, ale proces se chybově ukončí.
Dynamické nativní instrumentace je dotnet-coverage ve výchozím nastavení zakázána, což je alternativní způsob, jak sbírat krytí kódu pomocí stejných základních nástrojů. Ve výchozím nastavení je také zakázaná pro řešení v sadě Visual Studio, která nemají nativní projekty.
Doporučená akce
Pokud získáte pokrytí u řešení, která nemají žádné nativní komponenty, nemělo by vás to ovlivnit. Při shromažďování pokrytí ale můžete zaznamenat vyšší výkon.
Pokud shromáždíte pokrytí řešení, která zahrnují nativní komponenty, jako jsou projekty C++, máte následující možnosti:
Konfigurace projektů tak, aby používaly statickou nativní instrumentaci
OR
Aktualizujte na Microsoft.CodeCoverage 18.0.1 a povolte dynamickou nativní instrumentaci:
- Přidejte nastavení
<EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation>do souboru runsettings . - Provedení globálního odhlášení z tohoto nového výchozího nastavení pomocí nastavení proměnné prostředí
VSTEST_DISABLE_DYNAMICNATIVE_CODECOVERAGE_DEFAULT_SETTING=1
Podobně při shromažďování pokrytí kódu pomocí
vstest.consoleje nástroj VSTest verze 18.0.1 a novější vyžadován k úspěšnému shromažďování dynamického nativního pokrytí na systémech s nainstalovanou sadou SDK .NET 10.- Přidejte nastavení
Ovlivněná rozhraní API
Žádné.