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?
Je suis encore très nouveau et il s’agit de ma première tentative de méthode d’organisation avec du code c #.
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
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».
Essayez d'ajouter cette méthode à une classe et voyez si vous obtenez toujours l'erreur:
[STAThread]
static void Main()
{
}
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());
}
}
}
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".
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 ..
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".
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).
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.
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
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.
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.
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.
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");
}
}
}
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:
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.
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 ...?
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.
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)
{
}
}
}
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.