在我的项目中添加了一个新类并得到错误说Program.Main()有多个条目为什么?

问题是,在我添加新类之后,当我构建解决方案时出现了错误。 有什么不对?

在Form1我还没有任何代码。

刚刚添加了新课程:

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(); 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(); } } } 

然后我在Main()上看到Program.cs和错误

 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 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 

AC#程序只能有一个Program.Main()。 Main是程序启动时运行的第一个方法,因此编译器需要知道哪一个是真实的,如果你有两个则不能。

看起来你正在制作一个Windows应用程序。 您应该将代码添加到现有main,或者将其添加到由主窗体触发的事件处理程序中。

其他人指出你有两个静态void Main方法。 有两个简单的解决方案,一个是显而易见的,还有一个尚未明确提及:

  1. 将其重命名为其他任何内容,例如Main1NotMain等。
  2. 要设置@Habib提到的/ main编译器选项,只需在解决方案资源管理器中右键单击项目节点,选择“属性”,然后在“应用程序”部分中选择下拉列表中的“启动对象”。

使用解决方案2,您可以在不同的类中具有相同的Main(string[] args)签名,而无需编译器抱怨。

.NET程序应该只有一个静态Main方法。

你有两个,编译器不知道使用哪一个。

重命名粘贴的,除非您希望是应用程序的入口点(在这种情况下,重命名另一个),或者使用/main开关编译传递的应用程序,指定要使用的Main方法。

有关更多详细信息,请参阅MSDN上的Main()和命令行参数(C#编程指南) :

Main方法是C#控制台应用程序或Windows应用程序的入口点 。 (库和服务不需要Main方法作为入口点。)。 启动应用程序时,Main方法是第一个被调用的方法。

C#程序中只能有一个入口点。 如果您有多个具有Main方法的类,则必须使用/ main编译器选项编译程序,以指定要用作入口点的Main方法。 有关更多信息,请参阅/ main(C#编译器选项)。

(强调我的)

您有两个主要方法,这就是您收到此错误的原因。

从MSDN – 主要方法

C#程序中只能有一个入口点。 如果您有多个具有Main方法的类,则必须使用/ main编译器选项编译程序,以指定要用作入口点的Main方法。

如果您已修复错误并且Visual Studio仍然提供错误消息,则删除输出文件夹(默认为“bin”和“obj”)然后重建项目是值得的。 在我的情况下,只需点击“重建”没有帮助。