Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
0 de 2 pessoas classificaram isso como útil - Avalie este tópico

Erros de inicialização do .NET Framework: gerenciando a experiência do usuário

.NET Framework 4.5

O sistema de ativação do tempo de execução da linguagem comum (CLR, common language runtime) determina a versão do CLR que será usado para executar o código do aplicativo gerenciado. Em alguns casos, o sistema de ativação não poderá encontrar uma versão do CLR para carregar. Essa situação geralmente ocorre quando um aplicativo requer uma versão do CLR que não é válida ou não está instalado em um determinado computador. Se a versão solicitada não for encontrada, o sistema de ativação do CLR retorna um código de erro HRESULT da função ou interface que foi chamada, e pode exibir uma mensagem de erro para o usuário que está executando o aplicativo. Este artigo fornece uma lista de códigos HRESULT e explica como você pode impedir que a mensagem de erro seja exibida.

O CLR fornece a infra-estrutura de log para ajudá-lo a depurar problemas de ativação do CLR, como descrito em Como depurar problemas de ativação do CLR. Esta infra-estrutura não deve ser confundida com logs de associação de assembly, que são totalmente diferentes.

As APIs de ativação do CLR retornam códigos HRESULT para relatar o resultado de uma operação de ativação para um host. O host do CLR deve sempre consultar esses valores de retorno antes de continuar com as operações adicionais.

  • CLR_E_SHIM_RUNTIMELOAD

  • CLR_E_SHIM_RUNTIMEEXPORT

  • CLR_E_SHIM_INSTALLROOT

  • CLR_E_SHIM_INSTALLCOMP

  • CLR_E_SHIM_LEGACYRUNTIMEALREADYBOUND

  • CLR_E_SHIM_SHUTDOWNINPROGRESS

Se o sistema de ativação do CLR não puder carregar a versão correta do tempo de execução que é necessário para um aplicativo, ele exibe uma mensagem de erro para os usuários para que informá-los que seu computador não está configurado corretamente para executar o aplicativo, e fornece-lhes uma oportunidade para corrigir a situação. A seguinte mensagem de erro é normalmente apresentada nesta situação. O usuário pode escolher Sim para ir para um site da Microsoft onde eles podem baixar a versão correta do .NET Framework para o aplicativo.

Mensagem de erro comum para erros de inicialização

.NET Framework Initialization Error dialog box

Como um desenvolvedor, você tem uma variedade de opções para controlar a mensagem de erro de inicialização do .NET Framework. Por exemplo, você pode usar um sinalizador de API para impedir que a mensagem seja exibida, conforme discutido na seção a seguir. No entanto, você ainda precisa resolver o problema que impediu que seu aplicativo carregasse o tempo de execução solicitado. Caso contrário, seu aplicativo pode não ser executado, ou alguma funcionalidade pode não estar disponível.

Para resolver problemas subjacentes e fornecer a melhor experiência do usuário (menos mensagens de erro), recomendamos o seguinte:

  • Para aplicativos do .NET Framework 3.5 (e anteriores): Configure seu aplicativo para oferecer suporte ao .NET Framework 4 ou 4.5 (consulte instruções).

  • Para aplicativos .NET Framework 4: Instale o pacote redistribuível do .NET Framework 4 como parte de sua configuração de aplicativo. Consulte Guia de implantação do .NET Framework para desenvolvedores.

Exibir uma mensagem de erro para comunicar que uma versão solicitada do .NET Framework não foi encontrada pode ser visto, pelos usuários, como um serviço útil ou um aborrecimento secundário. Em ambos os casos, você pode controlar essa interface do usuário passando sinalizadores aos APIs de ativação.

O método ICLRMetaHostPolicy::GetRequestedRuntime aceita um membro de enumeração METAHOST_POLICY_FLAGS como entrada. Você pode incluir o sinalizador METAHOST_POLICY_SHOW_ERROR_DIALOG para solicitar uma mensagem de erro se a versão solicitada do CLR não for encontrada. Por padrão, a mensagem de erro não é exibida. (O método ICLRMetaHost::GetRuntime não aceita este sinalizador, e não fornece nenhuma outra maneira para exibir a mensagem de erro.)

O Windows fornece SetErrorMode uma função que você pode usar para declarar se você desejar que as mensagens de erro a ser mostradas como resultado de código que é executado dentro do processo. Você pode especificar o sinalizador de SEM_FAILCRITICALERRORS para impedir que a mensagem de erro seja exibida.

No entanto, em alguns cenários, é importante substituir a configuração de SEM_FAILCRITICALERRORS definida por um processo do aplicativo. Por exemplo, se você tiver um componente COM nativo que hospeda o CLR e que é hospedado em um processo onde SEM_FAILCRITICALERRORS é definido, você pode querer substituir o sinalizador, dependendo do impacto de exibir mensagens de erro dentro desse processo específico do aplicativo. Nesse caso, você pode usar um dos sinalizadores a seguir para substituir SEM_FAILCRITICALERRORS:

O CLR inclui um conjunto de hosts para uma variedade de cenários, e todos esses hosts exibem uma mensagem de erro quando encontram problemas para carregar a versão necessária do tempo de execução. A tabela a seguir fornece uma lista de hosts e suas políticas de mensagem de erro.

Host de CLR

Descrição

Política de mensagem de erro

A mensagem de erro pode ser desativada?

Host de EXE gerenciado

Inicia EXEs gerenciados.

É mostrado em caso de ausência de uma versão do .NET Framework

NO

Host de COM gerenciado

Carrega componentes de COM gerenciados em um processo.

É mostrado em caso de ausência de uma versão do .NET Framework

Sim, definindo o sinalizador de SEM_FAILCRITICALERRORS

Host do ClickOnce

Inicia aplicativos ClickOnce.

É mostrado em caso de ausência de uma versão do .NET Framework, começando com o .NET Framework 4.5

NO

Host de XBAP

Inicia Aplicativos de WPF XBAP.

É mostrado em caso de ausência de uma versão do .NET Framework, começando com o .NET Framework 4.5

NO

O sistema de ativação do CLR fornece o mesmo comportamento e interface do usuário no Windows 8, como ele faz em outras versões do sistema operacional do Windows, exceto quando encontra problemas ao carregar o CLR 2.0. O Windows 8 inclui o .NET Framework 4.5, que usa o CLR 4.5. No entanto, o Windows 8 não inclui o .NET Framework 2.0, 3.0, ou 3.5, os quais usam o CLR 2.0. Como resultado, os aplicativos que dependem do CLR 2.0 não são executados no Windows 8 por padrão. Em vez de isso, eles exibem a seguinte caixa de diálogo para permitir que os usuários instalem o .NET Framework 3.5. Os usuários podem também ativar o .NET Framework 3.5 no Painel de Controle. As duas opções são discutidas no artigo Instalando o .NET Framework 3.5 no Windows 8 ou 8.1.

Solicitar instalação do .NET Framework 3.5 sob demanda

Dialog box for 3.5 install on Windows 8
Observação Observação

O .NET Framework 4.5 substitui o .NET Framework 4 (CLR 4) no computador do usuário. Portanto, os aplicativos do .NET Framework 4 são executados perfeitamente, sem exibir esta caixa de diálogo, no Windows 8.

Quando o .NET Framework 3.5 estiver instalado, os usuários podem executar aplicativos que dependem do .NET Framework 2.0, 3.0, ou 3.5 em seus computadores de Windows 8. Também podem executar aplicativos do .NET Framework 1.0 e 1.1, desde que os aplicativos não estejam configurados explicitamente para executar somente no .NET Framework 1.0 ou 1.1. Consulte Migrando do .NET Framework 1.1.

Iniciando com o .NET Framework 4.5, o log de ativação do CLR foi aprimorado para incluir as entradas de log que gravam quando e porque a mensagem de erro de inicialização é exibida. Para obter mais informações, consulte Como depurar problemas de ativação do CLR.

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.