Fehlermeldung "CS5001-Programm enthält keine statische 'Main'-Methode, die für einen Einstiegspunkt geeignet ist."

74

Der folgende Codefehler kann nicht ausgeführt werden. CS5001-Programm enthält keine statische 'Main'-Methode, die für einen Einstiegspunkt geeignet ist

Was bedeutet diese Fehlermeldung?

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

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

Antworten:

182

Dies bedeutet, dass Sie derzeit keinen geeigneten Einstiegspunkt für Ihre Bewerbung haben.

Dieser Code funktioniert fast mit C # 7.1, aber Sie müssen C # 7.1 in Ihrer Projektdatei explizit aktivieren:

<LangVersion>7.1</LangVersion>

oder allgemeiner:

<LangVersion>latest</LangVersion>

Sie müssen auch umbenennen MainAsyncin Main. Also zum Beispiel:

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>

... baut und läuft gut.

Jon Skeet
quelle
4
@ 001: Siehe meine bearbeitete Antwort - die LangVersion benötigt Großbuchstaben L und V, und Sie müssen die Methode ebenfalls umbenennen.
Jon Skeet
6
und das war das problem. Nachdem ich die Schaltfläche Erweitert gefunden hatte, sah ich, dass sie auf die neueste Hauptversion (Standard) eingestellt war, was 7.0 bedeuten sollte. Ich habe es direkt auf 7.2 c # Compiler gesetzt. Dann funktioniert es :-)
Pascal
1
@StevenLiekens Die neueste Hauptversion - also momentan 7.0.
Jon Skeet
11
Das war es für mich. Sprachversionen können auch auf der Seite Eigenschaften> Registerkarte Erstellen> Erweitert
Stuart
2
Danke @JonSkeet für deine Antwort :). Es war ein dummer Fehler auf der Seite. Ich hatte nur die Sprachversion für den Debug-Build geändert und Publish verwendet den Release-Build.
Gaurav Thakur