Net ресурс с содержимым файлов делает docker ошибка сборки - PullRequest
0 голосов
/ 01 апреля 2020

"do tnet build" создает проект без ошибок, и в то же время docker build выдает следующую ошибку:

/src/Audit.Worker/Example/Resources.resx : error MSB3103: Invalid Resx file. System.IO.DirectoryNotFoundException: Could not find a part of the path '/src/Audit.Worker/Example/data/example.yaml'. [/src/Audit.Worker/Audit.Worker.csproj]

Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["./Audit.Worker/Audit.Worker.csproj", "Audit.Worker/"]
RUN dotnet restore "Audit.Worker/Audit.Worker.csproj"
COPY . /src/
WORKDIR "/src/Audit.Worker/"
RUN dotnet build "Audit.Worker.csproj" -c Release -o /apps

FROM build AS publish
RUN dotnet publish "Audit.Worker.csproj" -c Release -o /apps

FROM base AS final
WORKDIR /apps
COPY --from=publish /apps .
ENTRYPOINT ["dotnet", "Audit.Worker.dll"]

1 Ответ

1 голос
/ 01 апреля 2020

В конце концов, я выяснил причину.

Инструмент ресурсов Visual Studio (я полагаю, он отвечает за генерацию содержимого файла .resx) делает предположение, что пути к файлам нечувствительны к регистру, и генерирует все пути к файлам в нижний регистр (то есть data \ example.yaml ). В то же время базовый docker образ, используемый для сборки, основан на Linux, где пути чувствительны к регистру.

  <data name="Example" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>data\example.yaml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
  </data>

Итог: тем не менее, рабочим решением было вручную отредактировать файл .resx (или использовать в нижнем регистре, где это необходимо), мы решили вообще не использовать ресурсы. Похоже, больше нет должной поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...