System.BadImageFormatException с MetaQuotes.MT5ManagerAPI64.dll в контейнере Docker .NET 8Linux

Ответить
Anonymous
 System.BadImageFormatException с MetaQuotes.MT5ManagerAPI64.dll в контейнере Docker .NET 8

Сообщение Anonymous »

Я запускаю приложение .NET 8 внутри контейнера Docker, но при попытке загрузить MetaQuotes.MT5ManagerAPI64.dll возникает следующая ошибка:

Необработанное исключение. System.BadImageFormatException: не удалось загрузить
файл или сборку «/app/MetaQuotes.MT5ManagerAPI64.dll». Была
предпринята попытка загрузить программу неправильного формата. Имя файла:
'/app/MetaQuotes.MT5ManagerAPI64.dll'

DLL — это собственная библиотека, предоставляемая MetaQuotes, в частности MetaQuotes.MT5ManagerAPI64. .dll.
Мое приложение работает правильно на моем локальном компьютере (Windows), но не работает при запуске внутри контейнера Docker.
Я подозреваю, что проблема в связано с несоответствием архитектуры.

Код: Выделить всё

# Base image for running the application
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080

# Build stage
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src

COPY MyProject/MyApp/MyApp.csproj MyApp/
COPY MyProject/MyAuth/MyAuth.csproj MyAuth/
COPY MyProject/MyModels/MyModels.csproj MyModels/

COPY MyProject/ExternalLibraries/MyNativeLibrary/ ExternalLibraries/MyNativeLibrary/

RUN dotnet restore "MyApp/MyApp.csproj"

COPY MyProject/ .

WORKDIR "/src/MyApp"
RUN dotnet build "MyApp.csproj" -c $BUILD_CONFIGURATION -o /app/build -p:PlatformTarget=x64
RUN dotnet publish "MyApp.csproj" -c $BUILD_CONFIGURATION -o /app/publish -p:PlatformTarget=x64 /p:UseAppHost=false

FROM base AS final
WORKDIR /app

COPY --from=publish /app/publish .
COPY MyProject/ExternalLibraries/MyNativeLibrary/ ExternalLibraries/MyNativeLibrary/

ENTRYPOINT ["dotnet", "MyApp.dll"]

Конфигурация приложения: файл .csproj явно предназначен для x64:

Код: Выделить всё

     x64     net8.0 
Что может быть причиной этого исключения System.BadImageFormatException? Требуется ли какая-либо конкретная конфигурация или зависимость для загрузки этой собственной DLL в среде .NET на базе Linux? Как я могу убедиться, что DLL загружена правильно?
Я ожидал, что приложение запустится внутри контейнера Docker, не вызывая исключения System.BadImageFormatException, и успешно загрузит MyNativeLibrary64.dll< /code> во время инициализации.
Однако, несмотря на эти шаги, ошибка сохраняется. Мне нужно руководство о том, что может отсутствовать или быть неправильно настроено, чтобы решить эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -net-8-doc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»