Partilhar via


Compatibilidade de aplicativos no .NET Framework

A compatibilidade é um objetivo importante de cada versão do .NET Framework. A compatibilidade garante que cada versão seja aditiva, pelo que as versões anteriores continuarão a funcionar. Por outro lado, alterações na funcionalidade anterior (por exemplo, para melhorar o desempenho, resolver problemas de segurança ou corrigir bugs) podem causar problemas de compatibilidade no código existente ou em aplicativos existentes executados em uma versão posterior.

Cada aplicativo tem como alvo uma versão específica do .NET Framework por:

  • Definindo uma estrutura de destino no Visual Studio.
  • Especificando a estrutura de destino em um arquivo de projeto.
  • Aplicação de a TargetFrameworkAttribute ao código-fonte.

Ao migrar de uma versão do .NET Framework para outra, há dois tipos de alterações a serem consideradas:

Alterações de tempo de execução

Problemas de tempo de execução são aqueles que surgem quando um novo tempo de execução é colocado em uma máquina e o comportamento de um aplicativo muda. Ao ser executado em uma versão mais recente do que a de destino, o .NET Framework usa um comportamento peculiar para imitar a versão de destino mais antiga. O aplicativo é executado na versão mais recente, mas age como se estivesse sendo executado na versão mais antiga. Muitos dos problemas de compatibilidade entre versões do .NET Framework são atenuados por meio desse modelo peculiar. Por exemplo, se um binário foi compilado para o .NET Framework 4.0, mas é executado em uma máquina com o .NET Framework 4.5 ou posterior, ele é executado no modo de compatibilidade do .NET Framework 4.0. Isso significa que muitas das alterações na versão posterior não afetam o binário.

A versão do .NET Framework que um aplicativo destina é determinada pela versão de destino do assembly de entrada para o domínio do aplicativo em que o código é executado. Todos os assemblies adicionais carregados nesse domínio de aplicativo destinam-se a essa versão. Por exemplo, no caso de um executável, a versão que o executável destina é o modo de compatibilidade em que todos os assemblies nesse domínio de aplicativo são executados.

Alterações de redirecionamento

As alterações de redirecionamento são aquelas que surgem quando um assembly é recompilado para direcionar uma versão mais recente. Direcionar uma versão mais recente significa que o assembly opta pelos novos recursos, bem como possíveis problemas de compatibilidade para recursos antigos.

Classificação de impacto

Nos artigos que descrevem alterações de tempo de execução e redirecionamento, por exemplo, Redirecionamento de alterações para migração para o .NET Framework 4.8.x, itens individuais são classificados por seu impacto esperado da seguinte maneira:

Major:
Uma alteração significativa que afeta um grande número de aplicativos ou que requer uma modificação substancial do código.

Menor
Uma alteração que afeta um pequeno número de aplicativos ou que requer uma pequena modificação do código.

Caixa de borda
Uma alteração que afeta aplicativos em cenários muito específicos que não são comuns.

Transparente
Uma alteração que não tem efeito percetível no desenvolvedor ou usuário do aplicativo. O aplicativo não deve exigir modificação por causa dessa alteração.

Consulte também