I campi dei tipi di valore devono essere portabili
Aggiornamento: novembre 2007
TypeName |
ValueTypeFieldsShouldBePortable |
CheckId |
CA1900 |
Categoria |
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
Una regola consente di verificare che le strutture dichiarate con layout esplicito vengano allineate correttamente quando si esegue il marshalling in codice non gestito su piattaforme 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 che contengono campi non allineati determinano arresti del sistema sulle piattaforme a 64 bit.
Correzione di 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'ulteriore soluzione prevede l'utilizzo di LayoutKind.Sequential in luogo di LayoutKind.Explicit, se adeguato.
Esclusione di avvisi
Il presente avviso dovrà essere escluso solo se si verifica in caso di errore.