Atributos OSPlatform renomeados ou removidos
Os seguintes atributos introduzidos no .NET 5 preview 8 foram removidos ou renomeados: MinimumOSPlatformAttribute
, RemovedInOSPlatformAttribute
e ObsoletedInOSPlatformAttribute
.
Descrição das alterações
O .NET 5 Preview 8 introduziu os seguintes atributos no namespace System.Runtime.Versioning:
MinimumOSPlatformAttribute
RemovedInOSPlatformAttribute
ObsoletedInOSPlatformAttribute
No .NET 5 Preview 8, quando um projeto tem como destino uma variante específica do sistema operacional do .NET 5 usando um moniker de estrutura de destino, como net5.0-windows
, o build adiciona um atributo de nível de assembly System.Runtime.Versioning.MinimumOSPlatformAttribute
.
No .NET 5 RC1, o ObsoletedInOSPlatformAttribute
foi removido e MinimumOSPlatformAttribute
e RemovedInOSPlatformAttribute
foram renomeados da seguinte maneira:
Nome do Preview 8 | RC1 e nome posterior |
---|---|
MinimumOSPlatformAttribute |
SupportedOSPlatformAttribute |
RemovedInOSPlatformAttribute |
UnsupportedOSPlatformAttribute |
No .NET 5 RC1 e posterior, quando um projeto tem como destino uma variante específica de sistema operacional do .NET 5 usando um moniker de estrutura de destino, como net5.0-windows
, o build adiciona um atributo de nível de assembly SupportedOSPlatformAttribute.
Motivo da alteração
O .NET 5 Preview 8 introduziu atributos System.Runtime.Versioning para especificar plataformas com suporte para APIs. Os atributos são consumidos pelo Analisador de compatibilidade da plataforma para produzir avisos de build quando APIs específicas da plataforma são consumidas em plataformas que não dão suporte a essas APIs.
No caso do .NET 5 RC1, um recurso adicional foi acrescentado ao analisador de compatibilidade da plataforma para exclusão da plataforma. O recurso permite que as APIs sejam marcadas como totalmente sem suporte em plataformas do sistema operacional. Esse recurso provocou alterações nos atributos, incluindo o uso de nomes mais adequados. O ObsoletedInOSPlatformAttribute
foi removido porque não era mais necessário.
Versão introduzida
5.0 RC1
Ação recomendada
Ao redirecionar seu projeto do .NET 5 Preview 8 para o .NET 5 RC1, você poderá encontrar erros de build ou de tempo de execução devido a essas alterações. Por exemplo, a renomeação de MinimumOSPlatformAttribute
provavelmente produzirá erros, pois o atributo é aplicado a assemblies específicos de plataforma no tempo de compilação, e artefatos de build antigos ainda referenciam o nome da API antiga.
Exemplo de erros de tempo de build:
- Erro CS0246: O tipo ou o nome do namespace 'MinimumOSPlatformAttribute' não foi encontrado (uma diretiva de uso ou uma referência de assembly está ausente?)
- Erro CS0246: O tipo ou o nome do namespace 'RemovedInOSPlatformAttribute' não foi encontrado (uma diretiva de uso ou uma referência de assembly está ausente?)
- Erro CS0246: O tipo ou o nome do namespace 'ObsoletedInOSPlatformAttribute' não foi encontrado (uma diretiva de uso ou uma referência de assembly está ausente?)
Exemplo de erro em tempo de execução:
Exceção sem tratamento. System.TypeLoadException: não foi possível carregar o tipo 'System.Runtime.Versioning.MinimumOSPlatformAttribute' do assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Para resolver esses erros:
- Atualize todas as referências de
MinimumOSPlatformAttribute
para SupportedOSPlatformAttribute. - Atualize todas as referências de
RemovedInOSPlatformAttribute
para UnsupportedOSPlatformAttribute. - Remova todas as referências a
ObsoletedInOSPlatformAttribute
. - Recompile seu projeto (ou execute clean + build) para excluir artefatos de build antigos.
APIs afetadas
System.Runtime.Versioning.MinimumOSPlatformAttribute
System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
System.Runtime.Versioning.RemovedInOSPlatformAttribute