当前位置: 首页 > 知识库问答 >
问题:

码头工人。Net 6错误程序不包含适用于入口点的静态“Main”方法

舒博雅
2023-03-14

我试图建立我的docker形象,但我得到了这个错误。

错误CS5001:程序不包含适合入口点的静态“Main”方法[/6GAG.WebApi/6GAG.WebApi.csproj]

我在一个解决方案中有三个项目。

  • 1 webapi
  • 1个前端应用程序
  • 1类图书馆

我的Dockerfile存在于我的。sln文件是

FROM mcr.microsoft.com/dotnet/sdk:6.0 as build-env
WORKDIR /app

COPY 6GAG.WebApi/6GAG.WebApi.csproj /6GAG.WebApi/6GAG.WebApi.csproj 
COPY 6GAG.Core/6GAG.Core.csproj /6GAG.Core/6GAG.Core.csproj
RUN dotnet restore /6GAG.WebApi/6GAG.WebApi.csproj

COPY ./ ./
RUN dotnet publish /6GAG.WebApi/6GAG.WebApi.csproj -c Release -o out

FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
EXPOSE 80
COPY --from=build-env app/out/ .
ENTRYPOINT ["dotnet", "6GAG.WebApi.dll"]

我的. csproj文件:

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

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <RootNamespace>_6GAG.WebApi</RootNamespace>
    <UserSecretsId>7f7e2bd0-6f27-4752-afe8-9839b765d3f0</UserSecretsId>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="10.1.1" />
    <PackageReference Include="FluentValidation.AspNetCore" Version="10.3.4" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="6.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.11.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.0" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\6GAG.Core\6GAG.Core.csproj" />
  </ItemGroup>

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


</Project>

如何解决这个问题?

共有3个答案

微生德运
2023-03-14

试着检查libs项目中是否是这样的

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

换成那样

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

在图书馆项目中,我提到

Microsoft.AspNetCore.Mvc.Abstractions 

来解决我的依赖关系。

那对我有用。

全冥夜
2023-03-14

[下面是工作方案]

我在dotnet 6上也经历过这种错误。由于这是对dotnet core以前版本的升级,我不想在程序中手动添加Main方法。反恐精英。还有其他选择吗?

cs.proj

<PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>

更新!这对我有用

在使用docker构建时获取“程序不包含适合入口点的静态‘Main’方法”,为什么?

Docker-无法计算缓存密钥:未找到-在Visual Studio中运行良好

//将dockerfile移到新位置。sln目录

胡致远
2023-03-14

我遇到了同样的问题。即使项目文件被标记为

<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>

您还需要在dokerfile-r linux-64中添加针对linux的MS build标志,或者在您的应用程序中添加标记。csproj,以便docker文件位于正确的sdk位置。

RUN dotnet publish /6GAG.WebApi/6GAG.WebApi.csproj -c Release -o out -r linux-64
 类似资料:
  • 我在使用Docker时遇到了一个问题,无法找到合适的解决方案。 我试图使用. NETSDK2.1构建Docker映像。 问题是,当Docker试图运行build语句时,它失败了,错误输出被忽略 CSC:错误CS5001:程序不包含适合入口点的静态“Main”方法 有趣的是,如果我在本地命令行上执行构建语句,它会很好地工作。 我已经在项目上检查了我的语言版本标签,它是7.3。 这是我的Docker文

  • 问题内容: 我正在使用Spring框架(2.5)及其AOP功能。我有一个切入点表达,例如 凡ItemReader接口是一个Spring接口,它的签名是: 该接口有一个名为“ read”的方法,我要对其应用此建议:方法签名为: 但是,当我使用上述切入点表达式运行应用程序时,出现以下异常: java.lang.IllegalArgumentException:警告与此类型名称不匹配:org.sprin

  • 问题内容: 到目前为止,我一直在使用方法在Java中执行代码。什么时候/为什么要使用或代替? 问题答案: 这是一个特殊的问题,因为这不应该是选择问题。 启动JVM时,你指定要运行的类,并且该类就是程序启动所在的类。 通过,我假设你的意思是JApplet方法。在浏览器中启动小程序时,指定的小程序的方法将作为第一业务顺序执行。 通过,我假设你的意思是Runnable的方法。这是启动新线程时调用的方法。

  • 我在学习,我是新手,但我想知道我做什么来“运行”它。这是一个错误:

  • 我的代码编译得很好,但是当我运行它时,它给我一个错误: 这是我的密码: 我知道我需要在某个地方添加“publicstaticvoidmain(String[]args)”命令,但我不确定在哪里!谢谢你能给予的任何帮助!

  • 我有一个mongodb服务和一个使用docker compose运行的测试服务: 在我试图运行的start.sh脚本中: 但我得到了以下错误: 我的问题是:为什么会发生错误?Dependes_on属性不应该自动包含服务依赖项吗?正如这里提到的: depends_on 表示服务之间的依赖关系,这有两个效果: docker compose up将按依赖顺序启动服务。在下面的示例中,db和redis将在