CA1900: 値型フィールドはポータブルでなければなりません

TypeName

ValueTypeFieldsShouldBePortable

CheckId

CA1900

カテゴリ

Microsoft.Portability

互換性に影響する変更点

あり – フィールドがアセンブリの外部で参照できる場合

なし - フィールドがアセンブリの外部で参照できない場合

原因

この規則は、明示的なレイアウトによって宣言された構造体が、64 ビット オペレーティング システムでアンマネージ コードにマーシャリングされるときに、適切にアライメントされるかどうかを確認します。 IA-64 は、アライメントされていないメモリのアクセスを許可しません。この違反が修正されない場合、プロセスはクラッシュします。

規則の説明

明示的なレイアウトを持つ構造体に、正しくアライメントされていないフィールドが含まれていると、64 ビット オペレーティング システムでクラッシュが発生します。

違反の修正方法

8 バイト未満のすべてのフィールドは、それぞれのサイズの倍数のオフセットを持つ必要があります。また、8 バイト以上のフィールドは、8 の倍数のオフセットを持つ必要があります。 状況に応じて、LayoutKind.Explicit の代わりに LayoutKind.Sequential を使用して修正することもできます。

警告を抑制する状況

この警告は、エラーで生成された場合にのみ抑制します。