#c# #.net #docker
Вопрос:
У меня есть решение Visual Studios с 2 проектами; Один — сервис, другой-SDK, который является зависимостью от сборки сервиса. Я пытаюсь развернуть контейнер docker для службы, но проект SDK находится вне контекста сборки для файла dockerfile и должен оставаться таким — я попытался скопировать SDK.dll в контексте сборки и со ссылкой на это в файле Service.csproj я попытался использовать символическую ссылку (по-видимому, Докер этого не ценит), и я даже попытался просто скопировать весь проект SDK в каталоги служб, чтобы посмотреть, сработает ли это. Никаких кубиков.
Докерфайл:
FROM artifacts.project.com/docker-microsoft-remote/dotnet/aspnet:5.0 AS base ARG ASPNETCORE_Kestrel__Certificates__Default__Path ENV ASPNETCORE_Kestrel__Certificates__Default__Path=$ASPNETCORE_Kestrel__Certificates__Default__Path ARG ASPNETCORE_Kestrel__Certificates__Default__Password ENV ASPNETCORE_Kestrel__Certificates__Default__Password=$ASPNETCORE_Kestrel__Certificates__Default__Password WORKDIR /app EXPOSE 80 EXPOSE 443 EXPOSE 8443 EXPOSE 44360 FROM artifacts.project.com/docker-microsoft-remote/dotnet/sdk:5.0 AS build ARG USERNAME ARG PASSWORD ARG PAT ARG FEED_URL RUN wget -qO- https://aka.ms/install-artifacts-credprovider.sh | bash ENV VSS_NUGET_EXTERNAL_FEED_ENDPOINTS "{"endpointCredentials": [{"endpoint":"${FEED_URL}", "password":"${PAT}"}]}" ENV DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0 WORKDIR /src COPY ["./service.csproj", "./"] COPY ["./nuget.config", "./"] COPY ["./sdk", "./"] RUN dotnet restore "./service.csproj" RUN dotnet build "service.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "service.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "service.dll"]
Для файла service.csproj он пытается ссылаться на проект SDK (который я только что скопировал в проект службы из-за временного помешательства) примерно так:
lt;ItemGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'"gt; lt;ProjectReference Include='.sdksdk.csproj' /gt; lt;/ItemGroupgt;
Когда я пытался ссылаться на dll, я изменил ссылку на ProjectReference на просто ссылку и, конечно, изменил путь, чтобы указать на файл dll вместо csproj.
В любом случае, я получаю сообщение об ошибке, в котором говорится, что он не может найти проект sdk при запуске файла Dockerfile. Любая информация, которая может быть предоставлена, будет высоко оценена.