Bevat geen statische ‘hoofd’-methode die geschikt is voor een ingangspunt

Ik begon mijn code dagelijks te organiseren in afzonderlijke .cs-bestanden, en om de methoden die met de gebruikersinterface werken toe te staan dit te blijven doen, zou ik de .cs-code onder dezelfde naamruimte en openbare gedeeltelijke klassenaam maken, dus de methoden kunnen interoperabel zijn.

Mijn koptekst ziet er zo uit in vier bestanden, inclusief mijn hoofdkernbestand dat aanroept:

public shell()
{
InitializeComponent(); 
}

Koptekst van .cs-bestanden die werken met de gebruikersinterface (en dit nieuwe conflict lijken te veroorzaken):

using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Data.SqlServerCe;
using System.Diagnostics;
using System.Threading;
using System.Collections.Specialized;
using System.Net;
using System.Runtime.InteropServices;
using watin = WatiN.Core;
using WatiN.Core.Native.InternetExplorer;
using System.Web; 
namespace WindowsFormsApplication1
{
    public partial class shell : Form
    {

Als ik nu een foutopsporing/preview van mijn toepassing probeer te maken (dit is een Windows-toepassing binnen Visual Studio 2010 Express), krijg ik deze foutmelding:

Bevat geen statische ‘main’-methode die geschikt is voor een toegangspunt

Ik heb gekeken in de applicatie-eigenschappen in Application->Startup-object, maar het biedt me geen opties. Hoe kan ik de toepassing informeren om te beginnen bij het .cs-bestand met mijn InitializeComponent(); opdracht?

  • Ik heb tot nu toe rondgekeken zonder een oplossing.
  • De eigenschappen van elk .cs-bestand zijn ingesteld op ‘Compileren’.
  • Ik zie geen App.xaml-bestand in mijn Solutions Explorer, maar ik zie wel een app.config-bestand.

Ik ben nog erg nieuw en dit is mijn eerste poging tot een organisatiemethode met c#-code.


Antwoord 1, autoriteit 100%

Ik was ook naar dit probleem aan het kijken, en in mijn geval was de oplossing te gemakkelijk. Ik heb een nieuw leeg project toegevoegd aan de oplossing. Het nieuw toegevoegde project wordt automatisch ingesteld als een consoletoepassing. Maar aangezien het toegevoegde project een ‘leeg’ project was, bestond er geen Program.cs in dat nieuwe project. (Zoals verwacht)

Het enige wat ik hoefde te doen was het uitvoertype van de projecteigenschappen wijzigen in Klassebibliotheek


Antwoord 2, autoriteit 62%

Wijzig het uitvoertype onder Project > Eigenschappen naar die van een “Klassebibliotheek”. Standaard is deze instelling mogelijk ingesteld op een ‘consoletoepassing’.


Antwoord 3, autoriteit 17%

Ik had deze fout en heb deze opgelost met deze oplossing.

  1. Klik met de rechtermuisknop op het project
  2. Selecteer “Eigenschappen”
  3. Stel “Uitvoertype” in op “Klassenbibliotheek”.

Antwoord 4, autoriteit 16%

Probeer deze methode aan een klasse toe te voegen en kijk of je nog steeds de foutmelding krijgt:

[STAThread]
static void Main()
{
}

Antwoord 5, autoriteit 9%

Als je geen bestand hebt met de naam Program.cs, voeg dan gewoon een nieuwe klasse toe en noem deze Program.cs.

Plak dan deze code:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 namespace Sales {
     static class Program {
         /// <summary>
         /// The main entry point for the application.
         /// </summary>
         [STAThread]
         static void Main() {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             Application.Run(new Form1());
         }
     }
 }

Antwoord 6, autoriteit 7%

  1. Selecteer App.xaml en geef de eigenschappen weer. Stel Build Actionin op ApplicationDefinition.
  2. App.xaml en het bijbehorende *.cs-bestand moeten in de hoofdmap van het *.csproj-bestand worden geplaatst, d.w.z. e. niet in een “Bron”-map.

Antwoord 7, autoriteit 6%

Had dit probleem in VS 2017 veroorzaakt door:

statische asynchrone taakMain(string[] args)

(Functie ‘async main’ is niet beschikbaar in C# 7.0. Gebruik taalversie 7.1 of hoger)

Toevoegen

<LangVersion>latest</LangVersion>

naar app.csproj heeft geholpen.


Antwoord 8, autoriteit 5%

Als je wel een Main-methode hebt, maar nog steeds deze foutmelding krijgt, zorg er dan voor dat het bestand met de Main-methode “Build action” heeft ingesteld op “Compile” en “Copy to output directory” is ingesteld op “Do not copy”.


Antwoord 9, autoriteit 5%

Bewerk .csproj-bestand

<OutputType>Library</OutputType>

proost!


Antwoord 10, autoriteit 4%

Voor mij werd de fout eigenlijk veroorzaakt door “Functie ‘async main’ is niet beschikbaar in C# 7.0. Gebruik taalversie 7.1 of hoger”. Dit probleem resulteerde in het bericht ‘Bevat geen statische ‘hoofdmethode die geschikt is voor een ingangspunt’ in de foutenlijst, maar het uitvoervenster gaf de fout ‘niet beschikbaar’ weer.
Om dit te corrigeren, heb ik de taalversie gewijzigd van ‘C# laatste secundaire versie (standaard)’ in ‘C# nieuwste secundaire versie (laatste)’ onder Geavanceerde bouwinstellingen.


Antwoord 11, autoriteit 3%

hey ik kreeg dezelfde fout en de oplossing voor deze fout is gewoon hoofdletter M te schrijven in plaats van kleine m.. bijvoorbeeld:- static void Main()
Ik hoop dat het helpt..


Antwoord 12

Het lijkt op een Windows Forms-project dat een opstartformulier probeert te gebruiken, maar om de een of andere reden zijn de projecteigenschappen ingesteld op opstarten als Main.

Als u het applicatieframework heeft ingeschakeld, kunt u mogelijk niet zien dat Main actief is (dit is een ongeldige configuratie).


Antwoord 13

Salaam,
Ik heb zowel Visual Studio 2017als Visual Studio 2019

Visual Studio 2019 toont deze fout niet, maar 2017 wel. Probeer Visual Studio 2019 te installeren.


Visual Studio 2017


Visual Studio 2019


Antwoord 14

Na het plaatsen van de bovenstaande code in Program.cs, volg je deze stappen:

  1. Klik met de rechtermuisknop op het project

  2. Selecteer “Eigenschappen”

  3. Stel “Uitvoertype” in op “Windows-toepassing”

  4. Opstartobject: namepace.Program


Antwoord 15

Als u parameters wilt opgeven vanuit de opdracht, moeten ze er als volgt uitzien:

[STAThread]
 static void Main(params string[] paramaters)
 {

u kunt niet meer dan één parameter specificeren, anders zal dit ook de hierboven gerapporteerde fout veroorzaken.


Antwoord 16

Voor sommige anderen die hier komen:

In mijn geval had ik een .csproj gekopieerd van een voorbeeldproject dat <EnableDefaultCompileItems>false</EnableDefaultCompileItems>bevatte zonder het bestand Program.cs op te nemen. De oplossing was om EnableDefaultCompileItems te verwijderen of om Program.cs expliciet in het compileren op te nemen


Antwoord 17

Hallo, je hoofdklasse is verwijderd, dus voeg een nieuwe klasse toe die naam is ingesteld als Main.cs en plaag die code of als er een probleem is in het venster, dus hetzelfde probleem daarop

using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using UIKit;
namespace your_PKG_name.iOS
{
       public class Application
        {
            // This is the main entry point of the application.
            static void Main(string[] args)
            {
                // if you want to use a different Application Delegate class from "AppDelegate"
                // you can specify it here.
                UIApplication.Main(args, null, "AppDelegate");
            }
        }
}

Antwoord 18

Als je een klassenbibliotheekproject gebruikt, stel dan de klassenbibliotheek in als uitvoertype in eigenschappen onder de toepassingssectie van het project.


Antwoord 19

Als u inderdaad een openbare statische hoofdmethode hebt, kan dit uw build-instellingen zijn zoals uitgelegd in deze vraag: Problemen oplossen” Programma bevat geen statische ‘hoofd’ methode ‘wanneer het duidelijk doet …?


Antwoord 20

Ik heb ook voor dit probleem geconfronteerd. Toen besefte ik dat ik de console-applicatie (pakket) koos in plaats van console-applicatie.


Antwoord 21

Ik gebruik Visual Studio en had ook dit probleem. Het kostte me wat tijd, maar in mijn programma werd het veroorzaakt omdat ik per ongeluk een klasse-programma ‘Programma’ heb geschrapt dat automatisch wordt gegenereerd.


Antwoord 22

Voor toekomstige lezers die hetzelfde probleem hebben geconfronteerd met Windows Forms-applicatie, is één oplossing om deze regels toe te voegen aan uw hoofd- / startformulierklasse:

   [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyMainForm());
    }

Ga vervolgens naar Project Eigenschappen & GT; Toepassing & GT; Startup Object DropDown, zou de naamruimte moeten zien ,.mymainform, selecteer het, reinigen en bouwen de oplossing. En het zou moeten werken.


Antwoord 23

Controleer of het project is ingesteld als het “Startup-project”

Klik met de rechtermuisknop op het project en kies “Instellen als opstartproject” in het menu.


Antwoord 24

Als u op mij bent, bent u mogelijk begonnen met een klassenbibliotheek en schakelde deze vervolgens naar een console-applicatie over. Zo ja, verander dit dan …

namespace ClassLibrary1
{
    public class Class1
    {
    }
}

Aan deze …

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

Antwoord 25

Een geldige invoer ziet er als volgt uit:

public static class ConsoleProgram
    {
        [STAThread]
        static void Main()
        {
            Console.WriteLine("Got here");
            Console.ReadLine();
        }
    }

Ik had problemen bij het schrijven van een webtoepassing, maar vanwege de vreselijke laadtijd wilde ik hetzelfde project snel converteren naar een consoletoepassing en snelle methodetests uitvoeren zonder de hele oplossing te laden.

Mijn toegangspunt werd in /App_Code/Main.cs geplaatst en ik moest het volgende doen:

  1. Project instellen -> Eigenschappen -> Toepassing -> Uitvoertype = Console-toepassing
  2. Maak de /App_Code/Main.cs
  3. Voeg de bovenstaande code erin toe (en verwijs naar de methoden in mijn project)
  4. Klik met de rechtermuisknop op het bestand Main.cs -> Eigenschappen -> Bouwactie = Compileren

Hierna kan ik de uitvoer (zoals vermeld in stap 1) instellen op Class Library om de website te starten, of Console Application om de consolemodus te openen.

Waarom heb ik dit gedaan in plaats van twee afzonderlijke projecten?

Gewoon omdat ik verwijzingen had naar Entity Framework en andere specifieke verwijzingen die problemen veroorzaakten bij het uitvoeren van 2 afzonderlijke projecten.

Voor eenvoudigere oplossingen zou ik nog steeds 2 afzonderlijke projecten aanbevelen, aangezien de uitvoer van de console voornamelijk testcode is en u waarschijnlijk niet het risico wilt lopen dat dit in productiecode terechtkomt.


Antwoord 26

Klik met de rechtermuisknop op Project en selecteer Eigenschappen en stel vervolgens het uitvoertype in op de klasse Bibliotheek


Antwoord 27

Misschien onbedoeld, maar het verplaatsen van mijn Docker-bestand naar de map Solution in plaats van het project geëlimineerd de fout. Dit was behulpzaam toen ik nog steeds de oplossing onafhankelijk van Docker

wilde uitvoeren

Other episodes