Двоичный конвертер пропускает mscorlib на ARM - PullRequest
0 голосов
/ 01 ноября 2018

У меня бот-телеграмма, написанная на c # и использующая .net-core 2.1. Сейчас я пытаюсь запустить это приложение в Docker-контейнере на Raspberry Pi. Во время выполнения я сохраняю файл конфигурации, используя форматер System.Runtime.Serialization.Formatters.Binary. Согласно этот вопрос этот двоичный форматер должен быть включен в .net-core 2.1, верно? Но запись с использованием двоичного средства форматирования завершается с этим исключением. (Кажется, что чтение работает, хотя файл является неполным, поскольку запись всегда заканчивается неудачей):

Exception when writing the modules: System.TypeInitializationException: The type initializer for 'System.Runtime.Serialization.Formatters.Binary.Converter' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.

Я могу запустить приложение на Windows 10, в контейнере в Docker для Windows 10 и на Hypriot Linux на малине с ARM. Исключение происходит только в док-контейнере на Raspberry Pi.

Есть идеи, как мне это решить? Придется ли мне переключаться на другой сериализатор, хотя предполагается, что двоичный форматер включен в .net-core 2.1? Я пришел из Java, и самый простой включенный подход - это двоичный, поэтому я просто использовал его и в c #.

Вы можете найти весь проект в этом проекте github . Файл dockerARM содержит конфигурацию docker для docker на Raspberry Pi. Если вы хотите запустить приложение, вам нужен ключ API бота Telegram. Весь журнал сборки docker-compose, включая исключение, можно найти здесь . В шаге публикации dotnet есть куча ошибок, я не могу сказать, что понимаю их. Но шаг удался.

...