Condividi tramite


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.