二进制转换器在ARM上缺少mscorlib

时间:2018-11-01 13:09:19

标签: c# docker serialization .net-core binaryformatter

我有一个用C#编写并使用.net-core 2.1的电报机器人。现在,我试图在树莓派的docker容器中运行此应用程序。在运行期间,我使用格式化程序System.Runtime.Serialization.Formatters.Binary保存了配置文件。根据{{​​3}},此二进制格式器应包含在.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上的容器中运行该应用程序。例外仅发生在树莓派上的docker容器中。

有什么办法可以解决这个问题吗?即使应该将二进制格式化程序包含在.net-core 2.1中,我也必须切换到其他序列化程序吗?我来自Java,最简单的包含方法是二进制文件,因此我也在c#中使用了它。

您可以在this question中找到整个项目。文件dockerARM包含树莓派上docker的docker配置。如果要运行该应用程序,则需要电报bot API密钥。可以在this github project中找到包括异常在内的整个docker-compose构建日志。在dotnet发布步骤中有很多错误,我不能说我理解它们。但是这一步成功了。

0 个答案:

没有答案