CA1900: I campi dei tipi di valore devono essere portabili
Articolo | Valore |
---|---|
ID regola | CA1900 |
Category | Microsoft.Portability |
Modifica | Interruzione: se il campo può essere visualizzato all'esterno dell'assembly. Non di rilievo: se il campo non è visibile all'esterno dell'assembly. |
Causa
Questa regola verifica che le strutture dichiarate con layout esplicito siano allineate correttamente quando viene eseguito il marshalling al codice non gestito nei sistemi operativi a 64 bit. IA-64 non consente accessi alla memoria non idonei e il processo si arresta in modo anomalo se questa violazione non è corretta.
Descrizione regola
Le strutture con layout esplicito che contengono campi non allineati causano arresti anomali nei sistemi operativi a 64 bit.
Come correggere le violazioni
Tutti i campi di dimensioni inferiori a 8 byte devono avere offset multipli delle dimensioni e i campi che sono 8 byte o più devono avere offset multipli di 8. Un'altra soluzione consiste nell'usare LayoutKind.Sequential
invece di LayoutKind.Explicit
, se ragionevole.
Quando eliminare gli avvisi
Questo avviso deve essere eliminato solo se si verifica in caso di errore.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per