CA1900: Value type fields should be portable
Breaking - If the field can be seen outside the assembly.
Non-breaking - If the field is not visible outside the assembly.
This rule checks that structures that are declared with explicit layout will align correctly when marshaled to unmanaged code on 64-bit operating systems. IA-64 does not allow unaligned memory accesses and the process will crash if this violation is not fixed.
Structures that have explicit layout that contains misaligned fields cause crashes on 64-bit operating systems.
All fields that are smaller than 8 bytes must have offsets that are a multiple of their size, and fields that are 8 bytes or more must have offsets that are a multiple of 8. Another solution is to use LayoutKind.Sequential instead of LayoutKind.Explicit, if reasonable.
This warning should be suppressed only if it occurs in error.