Построить Docker-контейнер из решения с несколькими проектами - PullRequest
0 голосов
/ 04 мая 2018

У меня есть проект .NET Core, который содержал 2 проекта:

SLN: 
     - Web-API
     - Infrastructure

Я собирал его с помощью Docker, используя этот файл Docker

FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/ .
ENTRYPOINT ["dotnet", "/app/Lab/out/API.dll"]

Но теперь я также создал веб-приложение в своем решении

SLN:
 - Web-API
 - Web-App
 - Infrastructure

Вдруг докер больше не строит. Как так? Как создать два док-контейнера на основе одного и того же решения, одного для Web-API и одного для Web-приложения?

Сообщение об ошибке от Docker:

Не удалось загрузить задачу «GetDotNetHost» из сборки /usr/share/dotnet/sdk/NuGetFallbackFolder/microsoft.aspnetcore.mvc.razor.viewcompilation/2.0.3/build/netstandard2.0/Microsoft.AspNetCore. Mvc.Razor.ViewCompilation.Tasks.dll. Сборка с тем же именем уже загружена. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны, и что задача содержит открытый класс, реализующий Microsoft.Build.Framework.ITask. [/app/Lab/API.csproj]

1 Ответ

0 голосов
/ 07 мая 2018

Итак, эта проблема теперь окончательно исправлена. Фактически оказалось, что это было проблемой при компиляции проекта .net core 2.0, когда доступны представления Razor:

Предварительная компиляция Razor View в настоящее время недоступна при выполнении автономное развертывание (SCD) в ASP.NET Core 2.0. Функция будет быть доступным для SCD при выпуске 2.1. Для получения дополнительной информации см. Сбой компиляции представления при кросс-компиляции для Linux в Windows.

Мне нужно было добавить пакет nuget:

Microsoft.AspNetCore.Mvc.Razor.ViewCompilation

в моем проекте, чтобы заставить его работать. Странно было то, что он создавался в Visual Studio для Mac, но не из командной строки.

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