我看过很多类似的问题,但是似乎没有一个可以准确地代表我面临的问题。当我创建以下文件夹结构时:
./
./src
./src/test
然后导航到./src/test
并运行dotnet new webapi -lang c#
,这将创建一个能正常工作的最小API。我也可以无问题地运行dotnet publish -c RELEASE -o out /p:Version=1.0.0
。
然后我尝试在根目录创建一个 Docker 文件,其内容如下:
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
ARG BUILDCONFIG=RELEASE
ARG VERSION=1.0.0
COPY ./src/test/test.csproj ./src/test/
RUN dotnet restore ./src/test/test.csproj
COPY ./src/ ./
WORKDIR ./src/test/
RUN dotnet publish -c $BUILDCONFIG -o out /p:Version=$VERSION
FROM mcr.microsoft.com/dotnet/sdk:6.0
WORKDIR /app
COPY --from=build /src/test/out ./
EXPOSE 5000
ENTRYPOINT ["dotnet", "test.dll"]
我得到了以下输出:
=> ERROR [build 6/6] RUN dotnet publish -c RELEASE -o out /p:Version=1.0.0 2.5s
------
> [build 6/6] RUN dotnet publish -c RELEASE -o out /p:Version=1.0.0:
#11 0.511 Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET
#11 0.511 Copyright (C) Microsoft Corporation. All rights reserved.
#11 0.511
#11 0.931 Determining projects to restore...
#11 1.153 All projects are up-to-date for restore.
#11 2.400 CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [/src/test/test.csproj]
我尝试了一些方法,包括在 csproj 中设置 OutputType
为 Exe
,将 DockerDefaultTargetOS
设置为 win/linux,以及其他一些我在其他帖子中找到的建议,但最终我始终遇到相同的错误。有什么想法可能是错的吗?