gpt4 book ai didi

c# - 使用docker进行构建时,获取适用于入口点的 "Program does not contain a static ' Main'方法,为什么?

转载 作者:行者123 更新时间:2023-12-02 17:58:10 24 4
gpt4 key购买 nike

我在使用docker时遇到问题,找不到合适的解决方案。

我正在尝试使用dotnet sdk 2.1构建docker镜像。

事实是,当docker尝试运行build语句时,它会失败并且错误输出为

CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point



有趣的是,如果我在本地命令行上执行了buildd语句,则可以正常工作。

我已经在项目上检查了LanguageVersion标记,它是7.3。

这是我的 docker 文件
FROM microsoft/dotnet:2.1-sdk AS builder  
WORKDIR /src
COPY ./nuget ./nuget
COPY ./NuGet.Config ./
COPY Services/AadTracking ./

# Copy all the referenced projects

COPY ./Services/AadTracking/Company/Company.Service.AadTracking/Company.Service.AadTracking.csproj ./AadTracking/Company/Company.Service.AadTracking/Company.Service.AadTracking.csproj
COPY ./Services/AadTracking/Office.Re.Service.AadTracking/Office.Re.Service.AadTracking.csproj ./AadTracking/Office.Re.Service.AadTracking/Office.Re.Service.AadTracking.csproj
COPY ./Services/AadTracking/Company/Office.Re.Service.AadTracking.Company/Office.Re.Service.AadTracking.Company.csproj ./AadTracking/Company/Office.Re.Service.AadTracking.Company/Office.Re.Service.AadTracking.Company.csproj
COPY ./Services/AadTracking/Office.Re.Service.AadTracking.EventStore/Office.Re.Service.AadTracking.EventStore.csproj ./AadTracking/Office.Re.Service.AadTracking.EventStore/Office.Re.Service.AadTracking.EventStore.csproj

# Restore packages
RUN dotnet restore "./AadTracking/Company/Company.Service.AadTracking/Company.Service.AadTracking.csproj"

RUN dotnet build -c Debug --no-restore "./AadTracking/Company/Company.Service.AadTracking/Company.Service.AadTracking.csproj"

# COPY source code
#aad tracking
COPY ./Services/AadTracking/Company/Company.Service.AadTracking ./AadTracking/Company/Company.Service.AadTracking/
COPY ./Services/AadTracking/Office.Re.Service.AadTracking ./AadTracking/Office.Re.Service.AadTracking/
COPY ./Services/AadTracking/Company/Office.Re.Service.AadTracking.Company ./AadTracking/Company/Office.Re.Service.AadTracking.Company/
COPY ./Services/AadTracking/Office.Re.Service.AadTracking.EventStore ./AadTracking/Office.Re.Service.AadTracking.EventStore/

# Publish
RUN dotnet publish "./AadTracking/Company/Company.Service.AadTracking/Company.Service.AadTracking.csproj" -c Debug -o "../../dist"

# #Build the app image
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app

ENV ASPNETCORE_ENVIRONMENT Switch
ENV REINSURANCE_INSTANCE Docker-dev

COPY --from=builder /dist .

ENTRYPOINT ["dotnet", "Company.Service.AadTracking.dll"]

谢谢你的帮助!

最佳答案

我知道这有点迟了。 VS 2019仍然与netcore 3.1存在相同的问题。我偷看了Microsoft提供的示例。原来docker文件位于解决方案的其他位置,并且docker copy命令无法正常工作。
您必须将docker文件上移一个目录,以便它们与sln文件处于同一级别。它将解决此问题。
或另外,您可以更改示例docker文件示例下的路径,而无需更改docker文件的位置,恕我直言,最好将docker文件与其他文件保持在一起。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm64v8 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["WhatzThat.Web.csproj", "WhatzThat.Web/"]
RUN dotnet restore "WhatzThat.Web/WhatzThat.Web.csproj" -r linux-arm64

WORKDIR "/src/WhatzThat.Web"
COPY . .

RUN dotnet build "WhatzThat.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WhatzThat.Web.csproj" -c Release -o /app/publish -r linux-arm64 --self-contained false --no-restore

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WhatzThat.Web.dll"]

关于c# - 使用docker进行构建时,获取适用于入口点的 "Program does not contain a static ' Main'方法,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com