Obsolescências na biblioteca de classes do .NET Framework
O .NET Framework mudou ao longo do tempo. Cada nova versão adicionava novos tipos e membros de tipo que forneciam novas funcionalidades. Os tipos existentes e seus membros também mudaram ao longo do tempo. Por exemplo, alguns tipos tornaram-se menos importantes à medida que a tecnologia que suportavam foi substituída por uma nova tecnologia, e alguns métodos foram substituídos por métodos mais recentes que são superiores de alguma forma.
O .NET Framework e o Common Language Runtime se esforçam para oferecer suporte à compatibilidade com versões anteriores (permitindo que aplicativos que foram desenvolvidos com uma versão do .NET Framework sejam executados na próxima versão do .NET Framework). Isso torna difícil simplesmente remover um tipo ou um membro do tipo. Em vez disso, o .NET Framework indicou que um tipo ou um membro do tipo não deve mais ser usado, marcando-o como obsoleto ou preterido. Ao obsolescer um tipo ou um membro, os desenvolvedores estavam cientes de que ele iria embora e tinham tempo para responder à sua remoção. No entanto, o código existente que usa o tipo ou membro continuou a ser executado na nova versão do .NET.
Nota
No .NET (Core), obsolescer uma API não significa necessariamente que a API será removida. Para obter mais informações, consulte Remoção de API no .NET.
O atributo ObsoleteAttribute
O .NET Framework indica que um tipo ou membro de tipo está obsoleto marcando-o com o ObsoleteAttribute atributo. Aplicar o atributo a um tipo ou membro indica que o tipo ou membro será removido em alguma versão futura sem quebrar o código compilado que usa esse membro.
Além de indicar que um tipo ou um membro de tipo está obsoleto, ObsoleteAttribute define como o compilador lida com o código-fonte que inclui esse tipo ou membro. O compilador pode compilar o código, mas emitir uma mensagem de aviso, ou pode tratar o uso do tipo ou membro como um erro. No primeiro caso, o código pode ser compilado com êxito, mas uma mensagem de aviso indica que o tipo ou membro está obsoleto. No segundo caso, a compilação falha.
Mesmo que a compilação produza um erro em vez de uma mensagem de aviso, ObsoleteAttribute não afeta o comportamento em tempo de execução. Ou seja, os aplicativos que usam o tipo ou membro e que compilaram com êxito sempre serão executados com êxito. Somente a tentativa de recompilar um aplicativo que usa o tipo ou membro falha.
Como lidar com tipos e membros obsoletos
Quando você atualiza e recompila o código existente, o uso de um tipo ou membro obsoleto que produz um aviso do compilador em seu aplicativo é aceitável. No entanto, você deve revisar a mensagem de aviso do compilador para determinar se você deve alterar o código do aplicativo. Se a mensagem não apontar para uma alternativa adequada, siga um destes procedimentos:
Altere seu código removendo o uso do tipo ou membro, se possível.
-ou-
Analise a documentação desta área de tecnologia para determinar como responder à depreciação.
Você pode optar por não recompilar o código existente em relação a uma versão posterior do .NET Framework. Em vez disso, você pode especificar a versão do .NET Framework na qual o código compilado existente é executado. Por exemplo, suponha que você tenha um aplicativo chamado app1.exe que foi compilado em relação ao .NET Framework 3.5, mas deseja que o aplicativo seja executado no .NET Framework 4.5. Isso requer as seguintes etapas:
Crie um arquivo de configuração para seu executável principal e nomeie-o appName.exe.config, onde appName é o nome do executável do aplicativo. Para o aplicativo chamado app1.exe em nosso exemplo, você criaria um arquivo de configuração chamado app1.exe.config.
Adicione o seguinte ao arquivo de configuração.
<configuration> <startup> <supportedRuntime version="v4.0" /> </startup> </configuration>
Para direcionar uma versão específica do .NET Framework, atribua um dos seguintes valores de cadeia de caracteres ao version
atributo:
Versão do .NET Framework | version string |
---|---|
4.8 (incluindo 4.8.1) | v4,0 |
4.7 (incluindo os pontos 4.7.1 e 4.7.2) | v4,0 |
4.6 (incluindo 4.6.1 e 4.6.2) | v4,0 |
4.5 (incluindo 4.5.1 e 4.5.2) | v4,0 |
4 | v4,0 |
3.5 | v2.0.50727 |
2.0 | v2.0.50727 |
1.1 | v1.1.4322 |
1.0 | v1.0.3705 |
APIs obsoletas para .NET Framework 4.5 e versões posteriores
APIs obsoletas para versões anteriores
- Tipos obsoletos no .NET Framework 4
- Membros obsoletos no .NET Framework 4
- Lista obsoleta do .NET Framework 3.5
- Lista obsoleta do .NET Framework 2.0