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.
  • Aplicar um 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 uma aplicação tem como alvo é determinada pela versão de destino do assembly de entrada do domínio da aplicação em que o código é executado. Todos os assemblies adicionais carregados nesse domínio de aplicação destinam-se a essa mesma versão. Por exemplo, no caso de um executável, a versão a que o executável visa é o modo de compatibilidade em que todos os assemblies nesse domínio de aplicação 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. Apontar para uma versão mais recente significa que o assembly adere às novas funcionalidades e melhorias, bem como potenciais questões de compatibilidade com funcionalidades antigas.

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.

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

Caso extremo
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.

Ver também