CA1900: I campi dei tipi di valore devono essere portabili
TypeName |
ValueTypeFieldsShouldBePortable |
CheckId |
CA1900 |
Category |
Microsoft.Portability |
Breaking Change |
Sostanziale: se il campo è visibile all'esterno dell'assembly. Non sostanziale - Se il campo non è visibile all'esterno dell'assembly. |
Causa
Questa regola consente di verificare che le strutture dichiarate con layout esplicito vengano allineate correttamente quando viene eseguito il marshalling a codice non gestito nei sistemi operativi a 64 bit.IA-64 non consente accessi di memoria non allineata e, se la violazione non viene corretta, il processo verrà arrestato.
Descrizione della regola
Le strutture con layout esplicito contenente campi non allineati determinano arresti del sistema nel sistema operativo a 64 bit.
Come correggere le violazioni
Tutti i campi di dimensioni inferiori a 8 byte devono avere offset che siano multipli della relativa dimensione, mentre i campi di 8 byte o superiori devono avere offset multipli di 8.Un'altra soluzione è utilizzare LayoutKind.Sequential anziché LayoutKind.Explicit, se adeguato.
Esclusione di avvisi
Il presente avviso dovrà essere escluso solo se si verifica in caso di errore.