Хм, это скорее задом наперед: вам нужен атрибут в C #, чтобы вы могли соответствовать выравниванию структуры, выбранному компилятором собственного кода. И [FieldOffset] действительно нужен только для работы с профсоюзами.
Но вы можете довольно легко добиться такого рода компоновки, вставив отступ самостоятельно:
#pragma pack(push, 1)
public struct Message
{
int a;
short b;
int c;
char padding1[12];
long long dt;
}
#pragma pack(pop)