Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Durch das Ausführen von dotnet test --collect:"Code Coverage" wird die dynamische native Instrumentierung jetzt standardmäßig deaktiviert. Diese Änderung wirkt sich auf die Erfassung der Codeabdeckung aus nativem Code aus. Es wirkt sich nicht darauf aus, wie die Codeabdeckung aus verwaltetem Code erfasst wird.
Eingeführt in Version
.NET 10 GA
Vorheriges Verhalten
Zuvor wurde die dynamische systemeigene Instrumentierung standardmäßig aktiviert und ein Fallback für systemeigene Module verwendet, wenn statische systemeigene Instrumentierung nicht verwendet werden konnte. Dieses Verhalten wird in statischer und dynamischer systemeigener Instrumentierung beschrieben.
dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation was enabled by default
Neues Verhalten
Ab .NET 10 ist die dynamische systemeigene Instrumentierung standardmäßig deaktiviert. Die <EnableDynamicNativeInstrumentation>false</EnableDynamicNativeInstrumentation> Option wird standardmäßig von dotnet test und vstest eingestellt. Wenn Sie die Option in einer Runsettings-Datei explizit festlegen, wird sie nicht überschrieben.
dotnet test --collect:"Code Coverage"
# Dynamic native instrumentation is now disabled by default
Sie können die dynamische Native-Instrumentierung erneut aktivieren, indem Sie <EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation> in Ihrer runsettings-Datei festlegen. Wenn Sie dies tun, kann es jedoch möglicherweise mit "Die Codeausführung kann nicht fortgesetzt werden, da covrun64.dll nicht gefunden wurde." fehlschlagen. Dieser Fehler kann auch bei einem 32-Bit-Prozess auftreten.
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für Änderung
Die dynamische systemeigene Instrumentierung wurde standardmäßig aktiviert, um die Abwärtskompatibilität aufrechtzuerhalten.dotnet test Die Art und Weise, DLLs in den Prozess einzufügen, ist jedoch nicht standard. Bei Sicherheitshärtungsänderungen in der .NET 10-Laufzeit kann die verknüpfte DLL nicht gefunden werden, was dazu führt, dass der Prozess mit Einem Fehler abstürzt. Der Fehler ist in nicht interaktiven Sitzungen oder in der Befehlszeile möglicherweise nicht sichtbar, aber der Prozess stürzt ab.
Dynamische systemeigene Instrumentierung ist standardmäßig bereits deaktiviert dotnet-coverage, was eine alternative Möglichkeit zum Sammeln der Codeabdeckung mit den gleichen zugrunde liegenden Tools ist. Sie ist auch standardmäßig für Lösungen in Visual Studio deaktiviert, die nicht über systemeigene Projekte verfügen.
Empfohlene Aktion
Wenn Sie eine Erfassung für Lösungen sammeln, die keine nativen Komponenten enthalten, sollten Sie nicht betroffen sein. Möglicherweise stellen Sie jedoch eine verbesserte Leistung fest, wenn Sie die Abdeckung erfassen.
Wenn Sie eine Abdeckung für Lösungen sammeln, die systemeigene Komponenten enthalten, z. B. C++-Projekte, haben Sie die folgenden Optionen:
Konfigurieren Sie Ihre Projekte für die Verwendung der statischen nativen Instrumentierung.
ODER
Aktualisieren Sie auf Microsoft.CodeCoverage 18.0.1, und aktivieren Sie dynamische systemeigene Instrumentierung:
- Fügen Sie die Einstellung
<EnableDynamicNativeInstrumentation>true</EnableDynamicNativeInstrumentation>zu Ihrer Runsettings-Datei hinzu. - Deaktivieren Sie diese neue Standardeinstellung global, indem Sie die
VSTEST_DISABLE_DYNAMICNATIVE_CODECOVERAGE_DEFAULT_SETTING=1Umgebungsvariable festlegen.
Ebenso ist beim Sammeln der Codeabdeckung mit
vstest.consoleVSTest in Version 18.0.1 und höher erforderlich, um erfolgreich dynamische Native-Abdeckung auf Systemen zu erfassen, auf denen das .NET 10 SDK installiert ist.- Fügen Sie die Einstellung
Betroffene APIs
Keiner.