web-dev-qa-db-fra.com

Dépannage «le programme ne contient pas de méthode« principale »statique» alors qu'il en est clairement…?

Mon programme MS Visual C # se compilait et fonctionnait très bien. Je ferme MS Visual C # pour partir et faire d'autres choses dans la vie.

Je le rouvre et (avant de faire quoi que ce soit d'autre), allez dans "Publier" mon programme et obtenez le message d'erreur suivant:

Le programme C:\myprogram.exe ne contient pas de méthode statique "principale" adaptée à un point d'entrée

Hein? Oui, c'est vrai ... et tout fonctionnait 15 minutes plus tôt. Bien sûr, je peux croire que j'ai accidentellement frappé quelque chose ou fait quelque chose avant de le fermer ... mais quoi? Comment puis-je résoudre ce problème?

Mon fichier Program.cs ressemble à ceci:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;

namespace SimpleAIMLEditor
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new mainSAEForm());
        }
    }
}

... et il y a des commentaires là-dedans. Il n'y a pas d'autres erreurs.

Aidez-moi?

47
adeena

Les propriétés du fichier sont-elles définies sur Compiler?

49
Quibblesome

J'ai eu du mal avec cette erreur simplement parce que l'un de mes class library projets was set acceddentaly pour être une application console

assurez-vous donc que vos projets de bibliothèque de classes sont des bibliothèques de classes dans le type de sortie

enter image description here

26
Basheer AL-MOMANI

Oke, je regardais aussi cette question. Et dans mon cas, les solutions étaient trop faciles. 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 je devais faire était de changer le type de sortie des propriétés du projet en bibliothèque de classes

20
Freek Bos

Si vous avez une application WPF ou Silverlight, assurez-vous que App.xaml a "ApplicationDefinition" comme BuildAction dans les propriétés du fichier.

12
MrOnigiri

Vérifiez les propriétés de votre projet. Dans l'onglet "Application", sélectionnez votre classe Program comme objet de démarrage:

alt text

5
Igal Tabachnik

C'est étrange. Votre programme se compile et s'exécute-t-il avec succès et échoue uniquement sur "Publier" ou échoue-t-il sur chaque compilation maintenant?

De plus, avez-vous peut-être modifié les propriétés du fichier 'Build Action vers autre chose que Compile?

4
configurator

Pour moi, la même erreur s'est produite car j'ai renommé le namespace de la classe Program.
Le champ "Objet de démarrage" dans onglet "Application" du projet faisait toujours référence à l'ancien espace de noms. La sélection d'un nouvel objet de démarrage a résolu le problème et a également supprimé l'entrée obsolète de cette liste.
Vous pouvez également mettre à jour le champ "Espace de noms par défaut" dans le même onglet "Application".

2
Roland Pihlakas

J'ai eu ce problème et son parce que je n'utilisais pas la dernière version de C # (C # 7.3 au moment d'écrire ceci) et j'ai dû changer le modificateur d'accès internal ci-dessous en public.

internal class Program
 {
    public static void Main(string[] args)
    {
        //My Code
    }
  }

ou modifiez le .csproj pour utiliser la dernière version de C # (de cette façon, je pouvais toujours conserver la classe ci-dessus sous la forme internal):

<PropertyGroup>
    <LangVersion>latest</LangVersion>
    <NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>
1
PontiusTheBarbarian

Ce que j'ai trouvé, c'est que le fichier Program.cs ne faisait pas partie de la solution. J'ai fait ajouter un élément existant et ajouté le fichier (Program.cs) à la solution.

Cela a corrigé l'erreur: Erreur 1 Le programme '..... ne contient pas de méthode' Main 'statique appropriée pour un point d'entrée

1
Rich

Il est important que la méthode Main soit placée dans la classe correctement configurée dans Visual Studio en tant qu'objet de démarrage:

  • Cliquez avec le bouton droit sur votre projet dans l'Explorateur de projets; choisissez "Propriétés ..."
  • Dans la boîte de dialogue des propriétés, choisissez l'onglet "Application"
  • Dans l'onglet application, choisissez SimpleAIMLEditor.Program dans la liste déroulante de votre objet de démarrage

Exécutez à nouveau votre application. L'erreur disparaîtra.

1
dasblinkenlight

Mon problème est que j'ai accidentellement défini les arguments pour Main

static void Main (valeur de l'objet)

grâce à mon outil de refactoring. Il a fallu quelques minutes pour comprendre, mais devrait aider quelqu'un en cours de route.

0
satyajit

Dans mon cas (où aucune des solutions proposées ne correspond), le problème était que j'ai utilisé async/await où la signature de la méthode main ressemblait à ceci:

static async void Main(string[] args)

J'ai simplement supprimé async pour que la méthode main ressemble à ceci:

static void Main(string[] args)

J'ai également supprimé toutes les instances de await et utilisé .Result pour les appels asynchrones, afin que mon application console puisse compiler avec bonheur.

0