Share via


Aviso CA2015: não definir finalizadores para tipos derivados de MemoryManager<T>

A regra do analisador de código .NET CA2015 está habilitada, por padrão, a partir do .NET 5. Ela produz um aviso de build para todos os tipos que derivam de MemoryManager<T> que definem um finalizador.

Descrição das alterações

Do .NET 5 em diante, o SDK do .NET inclui Analisadores de código-fonte do .NET. Várias dessas regras estão habilitadas, por padrão, inclusive a CA2015. Se o projeto contiver um código que viole essa regra e estiver configurado para tratar avisos como erros, essa alteração poderá interromper o build.

A regra CA2015 sinaliza tipos que derivam de MemoryManager<T> que definem um finalizador. A adição de um finalizador a um tipo que deriva de MemoryManager<T> provavelmente é uma indicação de um bug. Ela sugere que um recurso nativo que poderia ter sido obtido em um Span<T> está sendo limpo, potencialmente enquanto ainda está em uso pelo Span<T>.

Versão introduzida

5,0

  • Remova a definição do finalizador. Para obter mais informações, confira CA2015.

  • Para desabilitar completamente a análise de código, defina EnableNETAnalyzers como false no arquivo de projeto. Para obter mais informações, confira EnableNETAnalyzers.

APIs afetadas

Não detectáveis com a análise de API.