0

我正在尝试创建一个 dotnet 核心应用程序并通过 azure yaml 管道(具有多个存储库)将其部署到 kubernetes 集群
我遇到以下错误:CSC:错误 CS5001:程序不包含适合的静态“主要”方法对于入口点 [/src/File.Pod/File.Pod.csproj]

该项目是使用以下命令创建的: dotnet new console -o File.Pod-n File.Pod
我的目标是部署一个 exe。Internet 上的大多数文档都在讨论部署 ASPNET Web 应用程序。

csproj 生成

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
    **<OutputType>Exe</OutputType>**
    <TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>  
 <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.7" />
    <PackageReference Include="Models" Version="9704.0.0-beta" />
    <PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" />
    <PackageReference Include="Utils.Log" Version="2020.9.3.1" />
 </ItemGroup>  
 <ItemGroup>
    <ProjectReference Include="..\Shared.Lib\File.Service\File.Service.csproj" />
  </ItemGroup>

 <ItemGroup>
    <Folder Include="Helpers\" />
 </ItemGroup>

</Project>

和码头文件:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["File.Pod.csproj", "File.Pod/"]
COPY ["Shared.Lib/File.Service/File.Service.csproj", "Shared.Lib/File.Service/"]
COPY ["Shared.Lib/File.DAL/File.DAL.csproj", "Shared.Lib/File.DAL/"]

COPY ["nuget.config", "./"] 
RUN dotnet restore "File.Pod/File.Pod.csproj" --configfile nuget.config -nowarn:msb3202,nu1503 --verbosity diag
COPY . .

WORKDIR "/src/File.Pod"
RUN dotnet build "File.Pod.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "File.Pod.csproj" -c Release -o /app

FROM build AS base
RUN apt update && apt install -y openssh-client
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "run"]

作为 ENTRYPOINT,我尝试了 ENTRYPOINT ["dotnet", "run"] 或 ENTRYPOINT ["dotnet", "File.POD.DLL"] 没有区别。

我觉得问题出在图像的类型上(FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build),但我不确定。我尝试了各种具有相同结果的方法。

确切的错误日志:
2020-09-11T11:05:41.9723837Z 步骤 10/26:运行 dotnet build "File.Pod.csproj" -c Release -o /app 2020-09-11T11:05:42.0083655Z --->在 7ed9311b9c89
2020-09-11T11:05:42.7118936Z Microsoft (R) Build Engine 版本 16.6.0+5ff7b0c9e 中运行,适用于 .NET Core
2020-09-11T11:05:42.7119408Z 版权所有 (C) Microsoft Corporation。版权所有。
2020-09-11T11:05:42.7119642Z
2020-09-11T11:05:43.1438745Z 确定要恢复的项目...
2020-09-11T11:05:45.6330496Z 已恢复 /src/File.Pod/File.Pod.csproj (在 2.04 秒内)。
2020-09-11T11:05:45.6330978Z 已恢复 /src/Shared.Lib/File.Service/File.Service.csproj(在 2.05 秒内)。
2020-09-11T11:05:45.7516552Z 已恢复 /src/Shared.Lib/File.DAL/File.DAL.csproj(在 101 毫秒内)。
2020-09-11T11:05:49.6118355Z File.DAL -> /app/File.DAL.dll
2020-09-11T11:05:50.2378452Z File.Service -> /app/File.Service.dll
2020-09- 11T11:05:50.6394251Z CSC:错误 CS5001:程序不包含适用于入口点的静态“Main”方法 [/src/File.Pod/File.Pod.csproj]
2020-09-11T11:05:50.6525494Z
2020-09-11T11:05:50.6525914Z 构建失败。
2020-09-11T11:05:50.6531013Z
2020-09-11T11:05:50.6536286Z CSC:错误 CS5001:程序不包含适用于入口点 [/src/File.Pod/File. Pod.csproj]
2020-09-11T11:05:50.6541921Z 0 警告
2020-09-11T11:05:50.6542199Z 1 错误

4

1 回答 1

1

8 小时的工作和 47 次构建尝试之后:

改变:

复制 。.
WORKDIR "/src/File.Pod"

到 WORKDIR "/src/File.Pod"
复制。.

注意:有大量文档,但不是一个详尽的好文档。
我希望某个地方的文档能够提供足够的知识以正确入门:图像的选择、目录范围、复制内容的重要性(谁能够理解将源代码复制到的“COPY ..”的重要性避免此错误等...

我 2 天前开始使用 docker、vsts 管道、多个存储库,并且已经可以写一本书,其中包含我遇到的所有(奇怪的、通用的和晦涩的)错误。现在错误地不谈论下一步,在 windows 中安装 docker 的问题2019(在 Amazon 中托管的 VM 中),在 windows 2019 环境中不起作用的 linux 映像(默认情况下?)。
真是一场噩梦,我想知道什么是成熟的,这两天遇到的问题比过去十年还要多!:-)

于 2020-09-11T12:31:22.663 回答