Невозможно найти файл .so в пакете nuget при развертывании через Docker.Linux

Ответить Пред. темаСлед. тема
Anonymous
 Невозможно найти файл .so в пакете nuget при развертывании через Docker.

Сообщение Anonymous »

Я написал пакет nuget, который использует скомпилированный код Rust, и хочу иметь возможность использовать этот пакет как в Linux, так и в Windows. Я скомпилировал код ржавчины в файлы .dll и .so и включил оба в пакет nuget. Включение пакета nuget в мой основной проект .net и локальное тестирование в Windows работает нормально. Проблема возникает, когда я развертываю свой основной проект .net в контейнере докеров на своем веб-сервере на базе Linux. Всякий раз, когда вызывается какой-либо код в пакете nuget, требующий .so, я получаю исключение:
Unable to load shared library 'opaque' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.4/opaque.so: cannot open shared object file: No such file or directory
/app/opaque.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.4/libopaque.so: cannot open shared object file: No such file or directory
/app/libopaque.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.4/opaque: cannot open shared object file: No such file or directory
/app/opaque: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.4/libopaque: cannot open shared object file: No such file or directory
/app/libopaque: cannot open shared object file: No such file or directory

Эту ошибку довольно легко понять, я просто не знаю, как ее исправить. Я почти уверен, что эта проблема связана с развертыванием через Docker, поскольку обычно кажется, что пакеты nuget, установленные в Linux, будут помещены в каталог /share/, поэтому он пытается найти его там. Я предполагаю, что установка пакета nuget из контейнера Docker предотвращает это.
Кто-нибудь знает, как это исправить? Либо указать другой путь, либо мой пакет nuget каким-то образом установлен в правильный каталог?
Я ссылаюсь на dll через атрибут следующим образом:
[DllImport("opaque")]

Структура пакета nuget выглядит следующим образом:
project/
.dll
.so
.csproj

Вот как я указываю .dll и .so в файле проекта


True
lib\$(TargetFramework)
Always


True
lib\$(TargetFramework)
Always



Я попробовал этот ответ здесь, но не смог заставить его работать. Я также попытался изменить для файла .so в файле пакета на app/, но это не сработало.
Файл Docker выглядит так этот. Пакет nuget включен в проект STS
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app

# copy csprojs and restore as distinct layers
WORKDIR /src
COPY ["./STS/STS.csproj", "STS/"]
COPY ["./Business/Business.csproj", "Business/"]
RUN dotnet restore "STS/STS.csproj"

# copy everything else and build
COPY . ./

WORKDIR "/src/STS"
RUN dotnet build "STS.csproj" -c Release -o /app/build -r linux-x64

FROM build AS publish
RUN dotnet publish "STS.csproj" -c Release -o /app/out -r linux-x64

# build runtime image
FROM mcr.microsoft.com/dotnet/sdk:8.0
WORKDIR /app
COPY --from=publish /app/out .
ENTRYPOINT ["dotnet", "STS.dll"]

project.asset.json
"Vaultic.OPAQUE.Net/1.1.13": {
"type": "package",
"compile": {
"lib/net8.0/OPAQUE.Net.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/OPAQUE.Net.dll": {
"related": ".xml"
}
},
"runtimeTargets": {
"runtimes/linux-x64/native/libopaque.so": {
"assetType": "native",
"rid": "linux-x64"
},
"runtimes/win-x64/native/opaque.dll": {
"assetType": "native",
"rid": "win-x64"
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... via-docker
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно найти файл .so в пакете nuget при развертывании через Docker.
    Anonymous » » в форуме Linux
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Невозможно использовать анализатор в пакете nuget. Экземпляр анализатора невозможно создать из DLL.
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Nuget не распознает файл HPP в пакете c ++
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как добавить конфигурацию из файла в пакете NuGet в конфигурацию проекта при его импорте?
    Anonymous » » в форуме C#
    0 Ответы
    96 Просмотры
    Последнее сообщение Anonymous
  • С# при развертывании как пакет nuget простой расчет дает неверные результаты
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

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