使用VSTS构build的.NET核心容器不能在Linux上运行

我正在使用Visual Studio Team Services使用aspnetcore映像构build一个.NET Core容器。 如果我在Linux机器上从源代码构build图像,我可以运行它,并curl localhost很好。

但是,在VSTS中运行相同的代码,构build相同的图像会产生不同的结果。 我正在使用“托pipe的Linux预览版”来构build可以工作的图像。 CI构build成功并将映像上载到我的私有Azureregistry。 当我在上面提到的同一台Linux机器上运行这个映像时,它会立即退出,并在日志中出现这个错误:

Did you mean to run dotnet SDK commands? Please install dotnet SDK from:...

这是Dockerfile:

 FROM microsoft/aspnetcore:1.1 WORKDIR /app COPY published . ENV ASPNETCORE_URLS http://+:80 EXPOSE 80 ENTRYPOINT ["dotnet", "ContainerPOC.dll"] 

该错误是由VSTS上的dotnet Publish任务中的错误引起的。 当这个命令被configuration时:

dotnet publish --output publish

这是执行:

dotnet publish --output publish/s

所添加的/s导致输出转到publish文件夹中名为“s”的子文件夹。 我改变了Dockerfile来反映这个位置(COPY指令),一切都很好。

错误是可重现的:

  • 注释掉ENTRYPOINT指令
  • build立图像
  • 从映像运行容器并执行交互式bash shell
  • 执行dotnet命令并指定工作目录中不存在的程序集名称

Did you mean..? 错误将会出现。 鉴于这种情况,这不是一个很明显的错误。