错误消息"CS5001程序不包含适用于入口点的静态'Main'方法"

001*_*001 51 c# console console-application visual-studio-2017 .net-core-2.0

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

这个错误信息是什么意思?

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

        bool result = await accountTest.CreateAccountAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 154

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

该代码几乎可以与C#7.1一起使用,但您需要在项目文件中明确启用C#7.1:

<LangVersion>7.1</LangVersion>
Run Code Online (Sandbox Code Playgroud)

或更一般地说:

<LangVersion>latest</LangVersion>
Run Code Online (Sandbox Code Playgroud)

您还需要重命名MainAsyncMain.例如:

Program.cs中:

using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        await Task.Delay(1000);
    }
}
Run Code Online (Sandbox Code Playgroud)

ConsoleApp.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <LangVersion>7.1</LangVersion>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

...构建并运行良好.

  • 这对我来说.还可以在"属性"页面>"构建"选项卡>"高级"中设置语言版本 (9认同)
  • 那就是问题所在.在我找到高级按钮后,我看到它设置为最新的主要版本(默认),这应该意味着7.0.我把它直接设置为7.2 c#compiler.然后它工作:-) (6认同)
  • @ 001:查看我编辑的答案 - LangVersion需要大写字母L和V,您还需要重命名该方法. (4认同)
  • 谢谢@JonSkeet的回复:).一边是愚蠢的错误.我只更改了Debug版本的语言版本,而Publish使用了Release版本. (2认同)