Partager via


Paramètres de compatibilité des profileurs

Par défaut, dans le .NET Framework version 4, le Common Language Runtime (CLR) charge et utilise uniquement les profileurs créés pour le .NET Framework 4. Il ne charge pas ou n'exécute pas les profileurs créés pour les versions 2.0, 3.0 ou 3.5 du .NET Framework, à moins que cela ne soit explicitement spécifié. (Dans cette rubrique, le terme « profileur de version 2.0 » fait référence aux profileurs créés pour les versions 2.0, 3.0 et 3.5 du .NET Framework.)

Les utilisateurs de profileurs doivent explicitement choisir d'utiliser les profileurs de version 2.0 à l'aide de la variable d'environnement COMPLUS_ProfAPI_ProfilerCompatibilitySetting. Les profileurs de version 2.0 utilisés dans le .NET Framework 4 se comportent comme suit :

  • Les API de profilage du .NET Framework version 2.0 continuent de fonctionner dans le .NET Framework 4 en fonction de la documentation de la version 2.0.

  • Le comportement du CLR ou des API de profilage de version 2.0 non documentés n'est pas garanti dans le .NET Framework 4. Les profileurs de version 2.0 qui dépendent d'un comportement non documenté ne fonctionnent peut-être pas dans le .NET Framework 4. Notez que ce paramètre de compatibilité ne fournit pas de compatibilité descendante avec le comportement du CLR 2.0.

COMPLUS_ProfAPI_ProfilerCompatibilitySetting

Avant de définir la variable d'environnement COMPLUS_ProfAPI_ProfilerCompatibilitySetting, vous devez définir les variables d'environnement COR_PROFILER ou COR_ENABLE_PROFILING. (Pour obtenir des instructions, consultez Configuration d'un environnement de profilage.)

Vous pouvez affecter à la variable d'environnement COMPLUS_ProfAPI_ProfilerCompatibilitySetting l'une des trois valeurs indiquées dans le tableau suivant.

RemarqueRemarque

Dans le .NET Framework version 3.5 et les versions antérieures, le CLR ne prend pas en charge la variable COMPLUS_ProfAPI_ProfilerCompatibilitySetting.Il essaie toujours de charger un profileur si les variables d'environnement COR_PROFILER ou COR_ENABLE_PROFILING ont été définies.

Paramètre

Comportement du CLR

EnableV2Profiler

Charge et active les profileurs de version 2.0.

DisableV2Profiler

Désactive les profileurs de version 2.0, mais ne les décharge pas. Les profileurs .NET Framework 4 ne sont pas affectés. Il s'agit de l'option par défaut.

PreventLoad

Ne charge pas de profileurs, quelle que soit la version du .NET Framework pour laquelle le profileur a été écrit.

Le comportement détaillé est le suivant :

  • EnableV2Profiler

    Le CLR du .NET Framework 4 charge et utilise le profileur disponible, quelle que soit la version du .NET Framework pour laquelle le profileur a été écrit. Dans le cadre d'un profilage côte à côte in-process, si le CLR du .NET Framework version 2.0 charge d'abord un profileur dans le processus, le CLR du .NET Framework 4 ne recharge pas ce profileur de version 2.0.

  • DisableV2Profiler (valeur par défaut)

    Le CLR du .NET Framework 4 charge le profileur et détermine sa version en appelant la méthode IUnknown::QueryInterface du profileur pour localiser l'interface ICorProfilerCallback3

    • Si le profileur implémente ICorProfilerCallback3, il s'agit d'un profileur du .NET Framework version 4, et le CLR continue à l'utiliser.

    • Si le profileur n'implémente pas ICorProfilerCallback3, il s'agit d'un profileur de version 2.0. Dans ce cas, le CLR libère l'interface de profileur et n'active pas le profileur. Toutefois, le CLR ne décharge pas la DLL du profileur. Il peut donc maintenir la compatibilité descendante avec le CLR de .NET Framework version 2.0, qui ne décharge pas les DLL de profileur. (Notez que les profileurs .NET Framework 4 ne sont pas déchargés au moment du détachement ou de l'arrêt. Par conséquent, si vous révisez votre profileur pour le .NET Framework 4, vous devez modifier ce comportement.)

  • PreventLoad

    Le CLR .NET Framework 4 ignore complètement le profileur. Ce paramètre est utile pour certains scénarios côte à côte in-process. Pour plus d'informations, consultez Profilage côte à côte in-process.

Par exemple, pour indiquer au CLR de charger votre profileur .NET Framework 2.0, ouvrez une fenêtre d'invite de commandes et tapez les éléments suivants :

set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
RemarqueRemarque

Ce commutateur de compatibilité affecte seulement le chemin d'accès de démarrage du profileur.Pour les profileurs à chargement par attachement, le runtime appelle la fonction IUnknown::QueryInterface pour l'interface ICorProfilerCallback3.Si le profileur n'implémente pas cette interface (ce qui est vrai pour les profileurs de version 2.0), le runtime ne charge pas le profileur et consigne une entrée d'échec de chargement du profileur dans le journal des événements.

Voir aussi

Concepts

Vue d'ensemble du profilage

Autres ressources

Profilage dans le .NET Framework 4

Référence des API non managées