代码之家  ›  专栏  ›  技术社区  ›  findusl

二进制转换器未命中ARM上的mscorlib

  •  0
  • findusl  · 技术社区  · 6 年前

    我有一个用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发布步骤中有很多错误,我不能说我理解它们。但这一步成功了。

    0 回复  |  直到 6 年前