Параметры совместимости профилировщика
В версии .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), среда выполнения не загружает профилировщик и записывает ошибку его загрузки в журнал событий. |
См. также
Основные понятия
Общие сведения о профилировании