从具有多个项目的解决方案构建docker容器

时间:2018-05-04 08:43:16

标签: c# .net docker .net-core

我有一个包含2个项目的.NET Core项目:

SLN: 
     - Web-API
     - Infrastructure

我使用这个dockerfile

使用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"]

但是现在我已经在我的解决方案中创建了一个Web应用程序

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

突然间,码头工人不再建造了。怎么会? 如何根据Web-API的相同解决方案和Web应用程序的一个解决方案创建两个docker容器?

来自Docker的

错误消息

无法从程序集/usr/share/dotnet/sdk/NuGetFallbackFolder/microsoft.aspnetcore.mvc.razor.viewcompilation/2.0.3/build/netstandard2.0/Microsoft.AspNetCore加载“GetDotNetHost”任务。 Mvc.Razor.ViewCompilation.Tasks.dll。已加载具有相同名称的程序集确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类。 [/app/Lab/API.csproj]

1 个答案:

答案 0 :(得分:1)

所以这个问题现在终于解决了。事实证明,当Razor视图可用时编译.net核心2.0项目是一个问题:

  

执行a时,Razor视图预编译当前不可用   ASP.NET Core 2.0中的自包含部署(SCD)。该功能将   2.1版本发布时可用于SCD。有关更多信息,请参阅   在Windows上对Linux进行交叉编译时,视图编译失败。

我需要做的是添加nuget包:

  

Microsoft.AspNetCore.Mvc.Razor.ViewCompilation

在我的项目中使它工作。奇怪的是,它正在为Visual Studio for Mac内部构建,但不是从命令提示符构建。