CA1900: Value type fields should be portable
For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.
|Breaking Change||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.