Partager via


Avertissement CA2015 : ne pas définir de finaliseurs pour les types dérivés de MemoryManager<T>

La règle d’analyseur de code .NET CA2015 est activée par défaut à compter de .NET 5. Il génère un avertissement de build pour tous les types qui dérivent de MemoryManager<T> et définissent un finaliseur.

Description de la modification

À compter de .NET 5, le Kit de développement logiciel (SDK) .NET inclut des analyseurs de code source .NET. Plusieurs de ces règles sont activées par défaut, y compris CA2015. Si votre projet contient du code qui enfreint cette règle et est configuré pour traiter les avertissements comme des erreurs, ce changement peut casser votre build.

La règle CA2015 signale les types qui dérivent de MemoryManager<T> et définissent un finaliseur. L’ajout d’un finaliseur à un type qui dérive de MemoryManager<T> est probablement une indication d’un bogue. Il suggère qu’une ressource native qui aurait pu être obtenue dans un Span<T> est en cours de nettoyage, potentiellement alors qu’elle est toujours utilisée par le Span<T>.

Version introduite

5,0

  • Supprimez la définition du finaliseur. Pour plus d’informations, consultez CA2015.

  • Pour désactiver complètement l’analyse du code, définissez EnableNETAnalyzers sur false dans votre fichier projet. Pour plus d’informations, consultez EnableNETAnalyzers.

API affectées

Non détectable via l’analyse des API.