Freigeben über


Einstellungen für die Profilerkompatibilität

In .NET Framework, Version 4 lädt und verwendet die Common Language Runtime (CLR) standardmäßig nur Profiler, die für .NET Framework 4 erstellt wurden. Die CLR lädt keine Profiler, die für die .NET Framework-Versionen 2.0, 3.0 oder 3.5 erstellt wurden, und führt diese nicht aus, sofern dies nicht explizit angegeben wird. (In diesem Thema beziehen sich die Begriffe "Profiler von Version 2.0" und "Version 2.0-Profiler" auf Profiler, die für die .NET Framework-Versionen 2.0, 3.0 und 3.5 erstellt wurden).

Profilerbenutzer müssen explizit angeben, dass sie Version 2.0-Profiler verwenden möchten. Dazu muss die COMPLUS_ProfAPI_ProfilerCompatibilitySetting-Umgebungsvariable verwendet werden. Version 2.0-Profiler, die in .NET Framework 4 verwendet werden, verhalten sich wie folgt:

  • Die Profilerstellungs-APIs in .NET Framework, Version 2.0, funktionieren weiterhin in .NET Framework 4 gemäß der Dokumentation zu Version 2.0.

  • Nicht dokumentierte Profilerstellungs-API oder CLR-Verhalten in Version 2.0 ist in .NET Framework 4 nicht gewährleistet. Für Profiler von Version 2.0 mit Abhängigkeiten von nicht dokumentiertem Verhalten wird keine problemlose Verwendung in .NET Framework 4 gewährleistet. Diese Kompatibilitätseinstellung sorgt nicht für Abwärtskompatibilität mit dem Verhalten von CLR 2.0.

COMPLUS_ProfAPI_ProfilerCompatibilitySetting

Bevor Sie die COMPLUS_ProfAPI_ProfilerCompatibilitySetting-Umgebungsvariable festlegen, müssen Sie die COR_PROFILER-Umgebungsvariable oder die COR_ENABLE_PROFILING-Umgebungsvariable festlegen. (Siehe Einrichten einer Profilerstellungsumgebung, um Anweisungen zu erhalten.)

Sie können die COMPLUS_ProfAPI_ProfilerCompatibilitySetting-Umgebungsvariable auf einen von drei Werten festlegen, wie in der folgenden Tabelle angezeigt.

HinweisHinweis

In .NET Framework, Version 3.5, und früheren Versionen unterstützt die CLR die COMPLUS_ProfAPI_ProfilerCompatibilitySetting-Variable nicht.Sie versucht immer, einen Profiler zu laden, wenn die COR_PROFILER-Umgebungsvariable oder die COR_ENABLE_PROFILING-Umgebungsvariable festgelegt wurde.

Einstellung

CLR-Verhalten

EnableV2Profiler

Lädt und aktiviert Profiler von Version 2.0.

DisableV2Profiler

Deaktiviert Profiler der Version 2.0, entlädt sie jedoch nicht. Die .NET Framework 4-Profiler sind nicht betroffen. Dies ist die Standardeinstellung.

PreventLoad

Lädt keine Profiler, und zwar unabhängig davon, für welche Version von .NET Framework der Profiler geschrieben wurde.

Das ausführliche Verhalten sieht wie folgt aus:

  • EnableV2Profiler

    Die .NET Framework 4-CLR lädt und verwendet den verfügbaren Profiler unabhängig davon, für welche Version von .NET Framework der Profiler geschrieben wurde. Wenn die CLR von .NET Framework, Version 2.0, zuerst einen Profiler im Prozess lädt, lädt die CLR von .NET Framework 4 diesen Profiler der Version 2.0 nicht neu (bei prozessinterner paralleler Profilerstellung).

  • DisableV2Profiler (Standard)

    Die .NET Framework 4-CLR lädt den Profiler und bestimmt die Version durch Aufrufen der IUnknown::QueryInterface-Methode des Profilers, um die ICorProfilerCallback3-Schnittstelle zu suchen. 

    • Wenn der Profiler ICorProfilerCallback3 implementiert, handelt es sich um einen Profiler von .NET Framework, Version 4, und die CLR verwendet ihn weiterhin.

    • Wenn der Profiler nicht ICorProfilerCallback3 implementiert, handelt es sich um einen Profiler der Version 2.0. In diesem Fall gibt die CLR die Profilerschnittstelle frei und aktiviert nicht den Profiler. Die CLR entlädt jedoch nicht die Profiler-DLL, sodass die Abwärtskompatibilität mit der CLR von .NET Framework, Version 2.0, beibehalten wird, die keine Profiler-DLLs entlädt. (.NET Framework 4-Profiler werden zum Zeitpunkt der Trennung oder des Herunterfahrens entladen. Wenn Sie den Profiler also für .NET Framework 4 überarbeiten, müssen Sie dieses Verhalten ändern.)

  • PreventLoad

    Die .NET Framework 4-CLR ignoriert den Profiler völlig. Diese Einstellung ist für einige prozessinterne parallele Szenarien nützlich. Weitere Informationen finden Sie unter Prozessinterne parallele Profilerstellung.

Wenn Sie zum Beispiel die CLR anweisen möchten, den .NET Framework 2.0-Profiler zu laden, öffnen Sie ein Eingabeaufforderungsfenster, und geben Sie Folgendes ein:

set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
HinweisHinweis

Dieser Kompatibilitätsschalter wirkt sich nur auf den Startpfad des Profilers aus.Für Profiler für Anfüge- und Ladevorgänge ruft die Laufzeit die IUnknown::QueryInterface-Funktion für die ICorProfilerCallback3-Schnittstelle auf.Wenn der Profiler diese Schnittstelle nicht implementiert ("true" für Profiler der Version 2.0), lädt die Laufzeit den Profiler nicht und verzeichnet im Ereignisprotokoll einen Profilerladefehlereintrag.

Siehe auch

Konzepte

Übersicht über die Profilerstellung

Weitere Ressourcen

Profilerstellung in .NET Framework 4

Referenz zur nicht verwalteten API