Даты в VB6 очень похожи на даты в .NET (оба по 8 байт), поэтому вы должны использовать маршал System.DateTime.
Строки фиксированной длины и массивы на основе 1 не поддерживаются в .NET. Для строк фиксированной длины вы можете просто использовать пользовательский класс .NET?
В дополнение к этому вы можете использовать <VBFixedString(20)>
для определения фиксированной строки, но это не работает так, как вы ожидаете в VB6. Если вы используете это в структуре:
Private Structure FixedStr
<VBFixedString(20)> Dim strTest As String
End Structure
А затем используйте в своем коде - вы можете получить разные результаты:
Dim fs As FixedStr
fs.strTest = "1234567890123456789012345"
MsgBox(Len(fs)) '<- Shows 20
MsgBox(Len(fs.strTest)) '<- Shows 25