Поделиться через


Параметры совместимости профилировщика

В версии .NET Framework 4 среда CLR по умолчанию загружает и использует только профилировщики, созданные для .NET Framework 4. Среда CLR не загружает и не запускает профилировщики, созданные для платформы .NET Framework версий 2.0, 3.0 или 3.5, если это не указано явным образом. (В этом разделе термин "профилировщик версии 2.0" применяется к профилировщикам, созданным для платформы .NET Framework версий 2.0, 3.0 и 3.5).

Пользователи профилировщика должны явным образом согласиться на использование профилировщиков версии 2.0 с помощью переменной среды COMPLUS_ProfAPI_ProfilerCompatibilitySetting. Профилировщики версии 2.0, используемые в .NET Framework 4, имеют следующее поведение:

  • Интерфейсы профилирования API для платформы .NET Framework версии 2.0 продолжают работать в .NET Framework 4 в соответствии с документацией версии 2.0.

  • Недокументированное поведение интерфейсов или среды CLR версии 2.0 в .NET Framework 4 не гарантируется. Профилировщики версии 2.0 с зависимостями или недокументированным поведением могут не работать в .NET Framework 4. Обратите внимание на то, что эта настройка совместимости не предоставляет обратной совместимости с поведением среды CLR 2.0.

COMPLUS_ProfAPI_ProfilerCompatibilitySetting

Перед установкой переменной среды COMPLUS_ProfAPI_ProfilerCompatibilitySetting необходимо настроить переменные среды COR_PROFILER или COR_ENABLE_PROFILING. Подробные указания см. в разделе Установка профилирующей среды.

Для переменной среды COMPLUS_ProfAPI_ProfilerCompatibilitySetting можно установить одно из значений, приведенных в следующей таблице.

ПримечаниеПримечание

В версии платформы .NET Framework 3.5 и в более ранних версиях среда CLR не поддерживает переменную COMPLUS_ProfAPI_ProfilerCompatibilitySetting.Если установлена переменная среды COR_PROFILER или COR_ENABLE_PROFILING, то платформа в таком случае всегда пытается загрузить профилировщик.

Параметр

Поведение среды CLR

EnableV2Profiler

Загружает и активирует профилировщики версии 2.0.

DisableV2Profiler

Отключает профилировщики версии 2.0, но не выгружает их. Профилировщики .NET Framework 4 при этом не затрагиваются. Это значение используется по умолчанию.

PreventLoad

Не загружает профилировщики вне зависимости от того, для какой версии платформы .NET Framework был создан профилировщик.

Подробнее это поведение описано ниже.

  • EnableV2Profiler

    Среда CLR .NET Framework 4 загружает и использует доступный профилировщик вне зависимости от того, для какой версии платформы .NET Framework он был создан. При внутрипроцессном параллельном профилировании среда .NET Framework 4 CLR не перегружает этот профилировщик версии 2.0, если среда CLR платформы .NET Framework версии 2.0 первой загружает профилировщик в процесс.

  • DisableV2Profiler (по умолчанию)

    Среда CLR .NET Framework 4 загружает профилировщик и определяет его версию путем вызова метода профилировщика IUnknown::QueryInterface для обнаружения интерфейса ICorProfilerCallback3

    • Если профилировщик реализует ICorProfilerCallback3, то это профилировщик платформы .NET Framework версии 4, и среда CLR продолжает использовать его.

    • Если профилировщик не реализует ICorProfilerCallback3, то это профилировщик версии 2.0. В этом случае среда CLR освобождает интерфейс профилировщика и не активирует его. В то же время среда CLR не выгружает DLL-файл профилировщика, чтобы обеспечить обратную совместимость со средой CLR платформы .NET Framework версии 2.0, которая не выгружает DLL-файлы. (Обратите внимание на то, что профилировщики .NET Framework 4 не выгружаются в момент отсоединения или отключения, поэтому это поведение необходимо изменить при обновлении профилировщика для версии .NET Framework 4).

  • PreventLoad

    Среда CLR .NET Framework 4 полностью игнорирует этот профилировщик. Этот параметр может использоваться в некоторых внутрипроцессных параллельных сценариях. Дополнительные сведения см. в разделе Внутрипроцессное параллельное профилирование.

Например, чтобы загрузить профилировщик платформы .NET Framework 2.0 в среде CLR, откройте командную строку и введите следующую команду:

set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
ПримечаниеПримечание

Этот параметр совместимости влияет только на путь загрузки профилировщика.Для профилировщиков с загрузкой путем присоединения среда выполнения вызывает функцию IUnknown::QueryInterface для интерфейса ICorProfilerCallback3.Если профилировщик не реализует этот интерфейс (что справедливо для профилировщиков версии 2.0), среда выполнения не загружает профилировщик и записывает ошибку его загрузки в журнал событий.

См. также

Основные понятия

Общие сведения о профилировании

Другие ресурсы

Профилирование в .NET Framework 4

Справочник по неуправляемым API