不包含适用于入口点的静态“main”方法

17

我无法弄清楚下面代码的问题。

当我尝试编译时,收到以下消息:

不包含适用于入口点的静态“main”方法。

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace RandomNumberGenerator
{

public partial class Form1 : Form
{
    private const int rangeNumberMin = 1;
    private const int rangeNumberMax = 3;
    private int randomNumber;

public Form1()
{            
        randomNumber = GenerateNumber(rangeNumberMin, rangeNumberMax);
}

private int GenerateNumber(int min,int max)
    {
        Random random = new Random();
        return random.Next(min, max);
    }

private void Display(object sender, EventArgs e)
    {                       
        switch (randomNumber)
        {
            case 1:
            MessageBox.Show("A");
            break;
            case 2:
            MessageBox.Show("B");
            break;
            case 3:
            MessageBox.Show("C");
            break;
        }

    }           
}
}

有人能告诉我我做错了什么吗?


1
随机数 random = new 随机数(); 返回 random.Next(min, max); 不要新建它。将 random 实例作为顶级(类成员)。 - nawfal
1
你的项目中有 Program.cs 文件吗?如果没有,那就是缺失的文件。 - Matt Houser
程序类在哪里? - Emond
1
顺便说一句,你的问题主题与你的问题无关。 - Matt Houser
10个回答

22
每个 C# 程序都需要一个入口点。默认情况下,新的 C# Windows Forms 项目会在 Program.cs 文件中包含一个名为 Program 的类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

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

您可能遗漏了这个或已将其删除。


20

您的项目必须作为一个空项目创建。因此,输出类型显示为控制台应用程序。将其更改为类库,它应该可以工作。


8

代码简单修改。 主方法应该是'Main'(大写M)。


4

我的情况非常奇怪 - 应用程序之前构建得很好,但在某一时刻我遇到了同样的问题。

我有: 控制台应用程序

public static async void Main(string[] args)

所以我的主函数是异步的,但返回类型是void,但必须是Task

public static async Task Main(string[] args)

之前使用void时非常好,不确定是什么导致了这种情况,其中void变得无法构建

¯ \ (ツ) / ¯


3
我刚自己遇到了这个问题。
我创建了一个winforms项目,决定重构我的代码并且不再包含UI,所以我删除了Program.cs和winforms文件,但仍然得到你遇到的同样的错误。
你需要重新添加像Matt Houser上面提到的静态void main ()方法,或者进入项目属性,在应用程序选项卡中更改输出类型为类库。

3

我也遇到了类似的问题,花了13个小时来寻找解决方案。最后,我找到了解决方法...

右键单击项目 -> 进入属性 -> 将输出类型更改为“类库”

如果这对您有帮助,请给我投票。


2

我也遇到过这个问题。我更改了位于项目属性/应用程序选项卡中的下拉菜单(输出类型:)。原始选定值为“类库”,但我将其更改为“Windows应用程序”,发现同样的错误。现在已解决。


1
晚了一些,但对我来说,这是一个“控制台应用程序”项目类型,但是文件属性中的“生成操作”被设置为“无”。将其更改为“编译”,问题就解决了。

1
在“解决方案资源管理器”中:右键单击项目->选择属性->选择应用选项卡->选择输出类型为“类库”,然后保存并构建它。

0

可能是您从项目中删除了程序文件。只需添加Program.cs文件,您的问题就会得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接