web-dev-qa-db-fra.com

Ne contient pas de méthode 'principale' statique adaptée à un point d'entrée

J'ai commencé à organiser mon code aujourd’hui en fichiers .cs distincts. Afin de permettre aux méthodes fonctionnant avec l’interface utilisateur de continuer, je créerais le code .cs sous le même espace de nom et le même nom de classe partiel public afin être interopérable. 

Mon en-tête ressemble à ceci dans quatre fichiers, y compris mon fichier principal principal qui appelle: 

public Shell()
{
InitializeComponent(); 
}

Zone d'en-tête des fichiers .cs fonctionnant avec l'interface utilisateur (et qui semble être à l'origine de ce nouveau conflit):

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
    {

Maintenant, lorsque j'essaie de déboguer/afficher un aperçu de mon application (BTW, il s'agit d'une application Windows dans Visual Studio 2010 Express), le message d'erreur suivant s'affiche:

Ne contient pas de méthode 'principale' statique adaptée à un point d'entrée

J'ai regardé dans les propriétés de l'application dans Application-> Objet de démarrage, mais cela ne m'offre aucune option. Comment puis-je informer l'application pour qu'elle commence par le fichier .cs contenant InitializeComponent (); commander? 

  • J'ai jeté un coup d'œil jusque-là sans solution.
  • Les propriétés de chaque fichier .cs sont définies sur 'Compiler'.
  • Je ne vois pas de fichier App.xaml dans l'explorateur de solutions, mais un fichier app.config.

Je suis encore très nouveau et il s’agit de ma première tentative de méthode d’organisation avec du code c #.

49
atwellpub

J'examinais également cette question et, dans mon cas, la solution était trop simple. J'ai ajouté un nouveau projet vide à la solution. Le projet nouvellement ajouté est automatiquement défini comme une application console. Mais comme le projet ajouté était un projet "vide", aucun Program.cs n'existait dans ce nouveau projet. (Comme prévu)

Tout ce que j'avais à faire était de changer le type de sortie des propriétés du projet en bibliothèque de classes

90
Arne

Remplacez le type de sortie sous Projet> Propriétés par celui d'une "bibliothèque de classes". Par défaut, ce paramètre a peut-être été défini sur une «application console».

53
Automationtested

Essayez d'ajouter cette méthode à une classe et voyez si vous obtenez toujours l'erreur:

[STAThread]
static void Main()
{
}
14
eyossi

Si vous n'avez pas de fichier nommé Program.cs, ajoutez simplement une nouvelle classe et nommez-le Program.cs

Puis collez ce 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());
         }
     }

 }
11
ROM

Si vous avez une méthode Main mais obtenez toujours cette erreur, assurez-vous que le fichier contenant la méthode Main a "Action de compilation" défini sur "Compiler" et "Copier dans le répertoire de sortie" défini sur "Ne pas copier".

4
simonbs

hé, j’ai la même erreur et la solution à cette erreur est d’écrire simplement Capital M au lieu de petit m .. Exemple: - static void Main () J'espère que cela aide ..

4
Chetan Soni
  1. Sélectionnez App.xaml et affichez ses propriétés. Définir Action de construction à ApplicationDefinition .
  2. App.xaml et son fichier * .cs correspondant doivent être placés dans le répertoire racine du fichier * .csproj, i. e. pas dans un dossier "Source".
3
Roman Volkov

J'ai eu cette erreur et résolu par cette solution.

--> Right click on the project

--> and select "Properties"

--> then set "Output Type" to "Class Library".
3
Ali Ahmadi

Ressemble à un projet Windows Forms qui tente d'utiliser un formulaire de démarrage, mais pour une raison quelconque, les propriétés du projet sont définies sur démarrage, ce qui correspond à Main.

Si vous avez activé l'infrastructure d'application, vous ne pourrez peut-être pas voir que Main est actif (configuration non valide).

2
Joshua

Lorsque vous souhaitez autoriser la spécification de paramètres de la commande, ils doivent ressembler à ceci:

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

vous ne pouvez pas spécifier plus d’un paramètre, sinon l’erreur rapportée ci-dessus sera également générée.

1
Gerrie Pretorius

Pour d'autres qui viennent ici:

Dans mon cas, j'avais copié un .csproj à partir d'un exemple de projet incluant <EnableDefaultCompileItems>false</EnableDefaultCompileItems> sans inclure le fichier Program.cs. Le correctif consistait à supprimer EnableDefaultCompileItems ou à inclure explicitement Program.cs dans la compilation

1
Madison Haynie

Si vous utilisez un projet de bibliothèque de classes, définissez Bibliothèque de classes comme type de sortie dans les propriétés de la section application du projet.

1
Manveer Singh

Pour les futurs lecteurs confrontés au même problème avec Windows Forms Application, une solution consiste à ajouter ces lignes à votre classe de formulaire principale/de démarrage:

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

Ensuite, sélectionnez Propriétés du projet> Application> Objet de démarrage. L'espace de nom.MyMainForm doit apparaître, sélectionnez-le, nettoyez-le et générez la solution. Et ça devrait marcher.

0
grumpy

J'utilise Visual Studio et j'ai également eu ce problème. Cela m'a pris un certain temps, mais dans mon programme, cela a été provoqué par la suppression accidentelle d'un cours nommé "Programme" généré automatiquement.

0
MaChaToc

hellow votre classe principale a été supprimée alors ajoutez une nouvelle classe avec le nom Main.cs et contrôlez ce code ou si porblem dans window, le même problème

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");

            }
        }
}
0
yash patel

Une entrée valide ressemble à:

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

J'avais des problèmes en écrivant une application Web, mais pour le temps de chargement épouvantable, je voulais convertir rapidement le même projet en une application console et effectuer des tests de méthodes rapides sans charger la solution complète.

Mon point d'entrée a été placé dans /App_Code/Main.cs et j'ai dû effectuer les opérations suivantes:

  1. Définir Projet -> Propriétés -> Application -> Type de sortie = Application console
  2. Créez le /App_Code/Main.cs
  3. Ajoutez le code ci-dessus dessus (et référencez les méthodes de mon projet)
  4. Faites un clic droit sur le fichier Main.cs -> Propriétés -> Action de compilation = Compiler

Après cela, je peux définir la sortie (comme indiqué à l'étape 1) sur Class Library pour démarrer le site Web ou sur Application console pour passer en mode console.

Pourquoi j'ai fait cela au lieu de 2 projets séparés?

Tout simplement parce que j'avais des références à Entity Framework et d'autres références spécifiques qui créaient des problèmes d'exécution de 2 projets distincts.

Pour des solutions plus simples, je recommanderais quand même deux projets distincts, car la sortie de la console est principalement un code de test et vous ne voulez probablement pas risquer de perdre cela en code de production.

0
Peter Kindberg

Si vous avez effectivement une méthode principale publique statique, il pourrait s'agir de vos paramètres de construction, comme expliqué dans cette question: Dépannage "Le programme" ne contient pas de méthode "principale" statique "alors qu'il est clair ...?

0
A. Wilson

Moi aussi j'ai fait face à ce problème. Puis j'ai réalisé que je choisissais Console Application (Package) plutôt que Console Application.

0
Subrahmanya Prasad

Salaam, j'ai les deux Visual Studio 2017 et Visual Studio 2019

Visual Studio 2019 n'affiche pas cette erreur, mais 2017 le fait. Essayez d'installer Visual Studio 2019.


_Visual Studio 2017
_

Visual Studio 2017


_Visual Studio 2019
_

Visual Studio 2019

0
Ali Jamal

Si vous êtes comme moi, vous avez peut-être commencé avec une bibliothèque de classes, puis changé en application console. Si oui, changez ceci ...

namespace ClassLibrary1
{
    public class Class1
    {
    }
}

Pour ça...

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

Vérifier si le projet est défini comme "Projet de démarrage"

Faites un clic droit sur le projet et choisissez "Définir comme projet de démarrage" dans le menu.

0
James Wierzba