Ajout d’une nouvelle classe à mon projet et erreur, par exemple Program.Main () a plus d’une entrée, pourquoi?

Le problème est qu’après avoir ajouté la nouvelle classe, l’erreur est survenue lorsque j’ai construit la solution. Qu’est-ce qui ne va pas?

Dans Form1, je n’ai pas encore de code.

Je viens d’append une nouvelle classe:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using OpenHardwareMonitor.Hardware; namespace OpenHardwareMonitorReport { class Program { static void Main(ssortingng[] args) { Computer computer = new Computer(); computer.Open(); var temps = new List(); foreach (var hardware in computer.Hardware) { if (hardware.HardwareType != HardwareType.CPU) continue; hardware.Update(); foreach (var sensor in hardware.Sensors) { if (sensor.SensorType != SensorType.Temperature) { if (sensor.Value != null) temps.Add((decimal)sensor.Value); } } } foreach (decimal temp in temps) { Console.WriteLine(temp); } Console.ReadLine(); } } } 

Puis je vois Program.cs et erreur sur Main ()

 using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace NvidiaTemp { static class Program { ///  /// The main entry point for the application. ///  [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Error 2 Program 'D:\C-Sharp\NvidiaTemp\NvidiaTemp\NvidiaTemp\obj\x86\Debug\NvidiaTemp.exe' has more than one entry sharepointfined: 'NvidiaTemp.Program.Main()'. Comstack with /main to specify the type that contains the entry point. D:\C-Sharp\NvidiaTemp\NvidiaTemp\NvidiaTemp\Program.cs 14 21 NvidiaTemp 

Le programme AC # ne peut avoir qu’un seul Program.Main (). Main est la première méthode lancée au démarrage du programme. Le compilateur doit donc savoir laquelle est la vraie et ne le peut pas si vous en avez deux.

On dirait que vous créez une application Windows. Vous devez soit append du code au principal existant, soit l’append à un gestionnaire d’événements déclenché par votre formulaire principal.

D’autres ont souligné que vous avez deux méthodes principales de vide statique. Il y a deux solutions faciles à cela, une évidente et une qui n’a pas encore été spécifiquement mentionnée:

  1. Renommez un autre, par exemple Main1 , NotMain , etc.
  2. Pour définir l’option / main du compilateur mentionnée par @Habib, cliquez avec le bouton droit de la souris sur le nœud du projet dans l’Explorateur de solutions, sélectionnez Propriétés, puis sélectionnez “Objet de démarrage” dans la liste déroulante.

Avec la solution 2, vous pouvez avoir des signatures Main(ssortingng[] args) identiques Main(ssortingng[] args) dans différentes classes sans que le compilateur ne se moque de vous.

Un programme .NET ne doit avoir qu’une seule méthode Main statique.

Vous en avez deux et le compilateur ne sait pas lequel utiliser.

Renommez le fichier collé, à moins que vous ne souhaitiez qu’il s’agisse du point d’entrée de l’application (dans ce cas, renommez l’autre), ou comstackz l’application en utilisant le commutateur /main spécifiant la méthode Main à utiliser.

Pour plus de détails, voir Main () et Arguments de ligne de commande (Guide de programmation C #) sur MSDN:

La méthode Main est le point d’entrée d’une application console C # ou Windows . (Les bibliothèques et les services ne nécessitent pas de méthode Main en tant que point d’entrée.). Lorsque l’application est démarrée, la méthode Main est la première méthode appelée.

Il ne peut y avoir qu’un seul point d’entrée dans un programme C #. Si plusieurs classes ont une méthode Main, vous devez comstackr votre programme avec l’option de compilation / main pour spécifier quelle méthode Main utiliser comme point d’entrée. Pour plus d’informations, consultez / main (Options du compilateur C #).

(c’est moi qui souligne)

Vous avez deux méthodes principales, c’est pourquoi vous obtenez cette erreur.

De MSDN – Méthode principale

Il ne peut y avoir qu’un seul point d’entrée dans un programme C #. Si plusieurs classes ont une méthode Main , vous devez comstackr votre programme avec l’option de compilation / main pour spécifier quelle méthode Main utiliser comme point d’entrée.

Si vous avez corrigé l’erreur et que Visual Studio vous envoie toujours un message d’erreur, il est intéressant de supprimer les dossiers de sortie (par défaut, “bin” et “obj”), puis de reconstruire le projet. Dans mon cas, un simple clic sur “reconstruire” n’a pas aidé.