Hinzugefügt eine neue Klasse zu meinem Projekt und erhalten den Fehler " sagen Programm.Main() hat mehr als einen Eintrag, warum?
Das problem ist, dass nachdem ich fügte die neue Klasse, in der der Fehler kam, als ich Tat, erstellen Sie die Projektmappe. Was kann falsch sein ?
In Form1 ich habe keine code noch.
Nur Hinzugefügt neue Klasse:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenHardwareMonitor.Hardware;
namespace OpenHardwareMonitorReport
{
class Program
{
static void Main(string[] args)
{
Computer computer = new Computer();
computer.Open();
var temps = new List<decimal>();
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();
}
}
}
Dann sehe ich das Programm.cs und Fehler auf der Main()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace NvidiaTemp
{
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());
}
}
}
Error 2 Program 'D:\C-Sharp\NvidiaTemp\NvidiaTemp\NvidiaTemp\obj\x86\Debug\NvidiaTemp.exe' has more than one entry point defined: 'NvidiaTemp.Program.Main()'. Compile with /main to specify the type that contains the entry point. D:\C-Sharp\NvidiaTemp\NvidiaTemp\NvidiaTemp\Program.cs 14 21 NvidiaTemp
- Sie haben zwei
Main
jetzt. - Dank der festen tnx.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem C# - Programm kann nur ein Programm.Main(). Main ist die erste Methode, die ausgeführt wird, wenn das Programm gestartet wird, so muss der compiler wissen, welche ist die richtige, und es nicht kann wenn Sie zwei.
Wie es aussieht, du machst eine Windows-Anwendung. Entweder sollten Sie code hinzufügen, um die bestehenden Haupt -, oder fügen Sie es ein event-handler ausgelöst, die von Ihrem Haupt-form.
Andere haben darauf hingewiesen, dass Sie zwei static void Main Methoden. Es gibt zwei einfache Korrekturen für diese, eine offensichtliche und eine, der bisher nicht ausdrücklich erwähnt noch:
Main1
,NotMain
usw.Mit Lösung 2, Sie kann haben identisch
Main(string[] args)
Signaturen in verschiedenen Klassen, ohne den compiler zu jammern./main
mit Visual Studio (... wer ist ernsthaft der Erstellung Ihrer C# - Projekte auf der Kommandozeile?)Erlebte ich dieses Problem nach dem hinzufügen eines Xunit-test-Klasse, um meine .NET Core 2.1 Projekt.
Folgende Artikel gibt eine detaillierte Erklärung, WARUM, und die Antwort, die für mich gearbeitet - hier.
Grundsätzlich der compiler generiert automatisch eine
Main
für die neue Klasse. Sie können eine Richtlinie in Ihr .csproj-Datei, um dies zu halten:<GenerateProgramFile>false</GenerateProgramFile>
Fügen Sie diese zu Ihrem
<PropertyGroup>
Abschnitt und kompilieren Sie neu.Ein .NET-Programm, sollte nur eine statische
Main
Methode.Haben Sie zwei, und der compiler nicht weiß, welche man zu verwenden.
Benennen Sie die eingefügte man, es sei denn, Sie wollen es der Einstieg in die Applikation (in dem Fall, benennen Sie die anderen), oder kompilieren Sie die Anwendung übergeben mit der
/main
Schalter Angabe die derMain
Methoden zu verwenden.Sehen Main() und Kommandozeilen-Argumente (C# - Programmierhandbuch) auf der MSDN-Website für weitere Details:
(Hervorhebung von mir)
Du hast zwei Main-Methoden, das ist, warum Sie diese Fehlermeldung bekommen.
Vom MSDN - Main-Methode
Zwei Wichtigsten Methoden ist in Ordnung. Wenn Sie erhalten die Fehlermeldung, die Sie erwähnt, dann brauchen Sie nur zu sagen, VS, welche Sie verwenden möchten.
Hier ist ein Beispiel, wo ich zwei Einstiegspunkte, je nachdem, wie ich will dev-überprüfen Sie die Montage.
Wenn Sie den Fehler behoben und Visual Studio noch gibt Sie Fehlermeldung, lohnt es sich, entfernen Sie die Ausgabe-Ordner (standardmäßig "bin" und "obj") und dann das Projekt neu erstellen. In meinem Fall nur einem Klick auf "neu erstellen" nicht helfen.