我有一个用c#写的电报机器人,正在使用。net核心2.1。现在,我正试图在一个docker容器中,在一个树莓pi上运行这个应用程序。在运行期间,我使用格式化程序保存了一个配置文件
System.Runtime.Serialization.Formatters.Binary
根据
this question
此二进制格式化程序应包含在中。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 for windows 10的容器中以及raspberry with ARM上的hypriot linux上运行该应用程序。例外情况只发生在raspberry pi上的docker容器中。
知道我该怎么解决这个问题吗?即使二进制格式化程序应该包含在其中,我也必须切换到不同的序列化程序。净核心2.1?我来自java,其中最简单的方法是二进制,所以我也在c#中使用了它。
你可以在中找到整个项目
this github project
.dockerARM文件包含raspberry pi上docker的docker配置。如果你想运行应用程序,你需要一个telegram机器人API密钥。可以找到整个docker compose构建日志,包括异常
here
.在dotnet发布步骤中有很多错误,我不能说我理解它们。但这一步成功了。