我有一个包含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]
答案 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内部构建,但不是从命令提示符构建。