Configurações de compatibilidade do Profiler
Por padrão, no .NET Framework versão 4, o common language runtime (CLR) carrega e usa os geradores de apenas perfis que foram criados para o .NET Framework 4. O CLR não carrega ou executa o geradores de perfis que foram criados para o.NET Framework versões 2.0, 3.0 ou 3.5, a menos que isso for especificado explicitamente. (Neste tópico, o termo "profiler versão 2.0" refere-se aos criadores de perfis que foram criados para o.NET Framework versões 2.0, 3.0 e 3.5).
Os usuários do Profiler devem explicitamente consentem em usar geradores de perfis da versão 2.0 usando o COMPLUS_ProfAPI_ProfilerCompatibilitySetting variável de ambiente. Geradores de perfis da versão 2.0 que são usados na .NET Framework 4 se comportam como segue:
A.NET Framework versão 2.0 que APIs de criação de perfil continuam a funcionar no .NET Framework 4 de acordo com a documentação da versão 2.0.
Comportamento criação de perfil de API ou o CLR não documentado versão 2.0 não é garantido em .NET Framework 4. Não há garantia de geradores de perfis da versão 2.0 que dependem de comportamento não documentado para funcionar na .NET Framework 4. Observe que essa configuração de compatibilidade não fornece compatibilidade com o comportamento do CLR 2.0.
COMPLUS_ProfAPI_ProfilerCompatibilitySetting
Antes de definir o COMPLUS_ProfAPI_ProfilerCompatibilitySetting a variável de ambiente, você deve definir o COR_PROFILER ou COR_ENABLE_PROFILING variáveis de ambiente. (Consulte Configurando um ambiente de criação de perfil para obter instruções.)
Você pode definir a variável de ambiente COMPLUS_ProfAPI_ProfilerCompatibilitySetting para um dos três valores, conforme mostrado na tabela a seguir.
Observação
No.NET Framework versão 3.5 e versões anteriores, o CLR não dá suporte a variável COMPLUS_ProfAPI_ProfilerCompatibilitySetting.Sempre tenta carregar um gerador de perfil se definiu as variáveis de ambiente COR_PROFILER ou COR_ENABLE_PROFILING.
Configuração |
Comportamento do CLR |
---|---|
EnableV2Profiler |
Carrega e ativa os geradores de perfis da versão 2.0. |
DisableV2Profiler |
Desativa os geradores de perfis da versão 2.0, mas não as descarrega. O .NET Framework 4 geradores de perfis não são afetados. Isso é a configuração padrão. |
PreventLoad |
Não carregar qualquer geradores de perfis, independentemente de qual versão do.NET Framework o profiler foi gravado para. |
O comportamento detalhado é a seguinte:
EnableV2Profiler
O .NET Framework 4 o CLR carrega e usa o criador de perfil disponível, independentemente de qual versão do.NET Framework o profiler foi escrito um loop for No processo in lado a lado perfis, se o.NET Framework versão 2.0 do CLR carrega um gerador de perfil primeiro no processo, o .NET Framework 4 não recarregar o CLR profiler dessa versão 2.0.
DisableV2Profiler (padrão)
O .NET Framework 4 CLR carrega o profiler e determina a sua versão, chamando o profiler IUnknown::QueryInterface método para localizar o ICorProfilerCallback3 interface.
Se o profiler implementa ICorProfilerCallback3, é um.O criador de perfil do NET Framework versão 4 e o CLR continua a usá-lo.
Se o profiler não implementa ICorProfilerCallback3, ele é um profiler versão 2.0. Nesse caso, o CLR libera a interface do profiler e não ativar o profiler. No entanto, o CLR não descarrega o profiler DLL, portanto, ela pode manter a compatibilidade com versões anteriores do.NET Framework versão 2.0 CLR, que não descarregar DLLs do profiler. (Observe que .NET Framework 4 geradores de perfis chegar descarregados desanexar ou tempo de desligamento, caso você está revisando o seu gerador de perfil para o .NET Framework 4, você terá que alterar esse comportamento.)
PreventLoad
O .NET Framework 4 CLR ignora completamente o profiler. Essa configuração é útil para alguns cenários de lado a lado no processo. Para obter mais informações, consulte No processo de criação de perfil lado a lado.
Por exemplo, para instruir o CLR para carregar seu.NET Framework 2.0 profiler, abra uma janela de Prompt de comando e digite o seguinte:
set COMPLUS_ProfAPI_ProfilerCompatibilitySetting=EnableV2Profiler
Observação
Essa opção de compatibilidade afeta somente o caminho de inicialização do profiler.Para anexar a carga de geradores de perfis, o tempo de execução chama o IUnknown::QueryInterface função para o ICorProfilerCallback3 interface.Se o profiler não implementa essa interface (que é verdadeiro para criadores de perfis da versão 2.0), o runtime não carrega o profiler e registra uma entrada de falha de carregamento do profiler no log de eventos.
Consulte também
Conceitos
Visão geral de criação de perfil