CA1900: Los campos de tipos de valor deberían ser portátiles
TypeName |
ValueTypeFieldsShouldBePortable |
Identificador de comprobación |
CA1900 |
Categoría |
Microsoft.Portability |
Cambio problemático |
Problemático: si el campo se puede ver fuera del ensamblado. No problemático: si el campo no es visible fuera del ensamblado. |
Motivo
Esta regla comprueba que las estructuras declaradas con un diseño explícito se alinearán correctamente cuando se calculen las referencias al código no administrado en sistemas operativos de 64 bits.IA-64 no permite accesos a memoria no alineada y el proceso se bloqueará si no se corrige esta infracción.
Descripción de la regla
Las estructuras que tienen un diseño explícito que contiene campos no alineados producen bloqueos en los sistemas operativos de 64 bits.
Cómo corregir infracciones
Todos los campos que tengan menos de 8 bytes deben tener posiciones de desplazamiento que sean múltiplo de su tamaño, y los campos de 8 bytes o más deben tener posiciones de desplazamiento que sean múltiplo de 8.Otra solución es utilizar LayoutKind.Sequential en lugar de LayoutKind.Explicit, si es razonable.
Cuándo suprimir advertencias
Únicamente se debe suprimir esta advertencia si se produce por un error.