错误消息“ CS5001程序不包含适用于入口点的静态“主”方法”


74

无法执行以下代码错误CS5001程序不包含适用于入口点的静态“ Main”方法

此错误消息是什么意思?

class Program
{
    static async Task MainAsync(string[] args)
    {
        Account.accountTest accountTest = new Account.accountTest();

        bool result = await accountTest.CreateAccountAsync();
    }
}

Answers:


182

这意味着您目前没有适合您的应用程序的入口点。

该代码几乎可以在C#7.1中使用,但是您确实需要在项目文件中显式启用C#7.1:

<LangVersion>7.1</LangVersion>

或更一般而言:

<LangVersion>latest</LangVersion>

您还需要重命名MainAsyncMain。因此,例如:

Program.cs:

using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        await Task.Delay(1000);
    }
}

ConsoleApp.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <LangVersion>7.1</LangVersion>
  </PropertyGroup>
</Project>

...可以正常运行。


4
@ 001:请参阅我编辑的答案-LangVersion需要大写的L和V,并且您还需要重命名该方法。
乔恩·斯基特

6
那就是问题所在。找到“高级”按钮后,我看到它设置为最新的主要版本(默认),应为7.0。我直接将其设置为7.2 c#编译器。然后它起作用了:-)
Pascal

1
@StevenLiekens最新的主要版本-目前为7.0。
乔恩·斯基特

11
这是给我的。语言版本也可以在“属性”页面>“构建”选项卡>“高级
Stuart”中设置(

2
感谢@JonSkeet的回复:)。一面是愚蠢的错误。我只更改了Debug版本的语言版本,而Publish版本使用了Release版本。
gaurav thakur
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.