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?
Les propriétés du fichier sont-elles définies sur Compiler?
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
Si vous avez une application WPF ou Silverlight, assurez-vous que App.xaml a "ApplicationDefinition" comme BuildAction dans les propriétés du fichier.
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
?
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".
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>
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
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:
SimpleAIMLEditor.Program
dans la liste déroulante de votre objet de démarrageExécutez à nouveau votre application. L'erreur disparaîtra.
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.
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.