故障排除“程序不包含静态'主'方法”,当它显然...?

时间:2008-12-22 17:36:35

标签: c# compilation

我的MS Visual C#程序正在编译并运行得很好。 我关闭了MS Visual C#,以便在生活中做其他事情。

我重新打开它(在执行任何其他操作之前)转到“发布”我的程序并收到以下错误消息:

  

程序C:\ myprogram.exe不包含适用于入口点的静态“Main”方法

咦?是的,它确实......而且它们都提前15分钟工作了。当然,我可以相信,在我关闭之前,我不小心碰到了什么或做了什么......但是什么?我该如何解决这个问题?

我的Program.cs文件如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;

namespace SimpleAIMLEditor
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new mainSAEForm());
        }
    }
}

......那里有一些评论。没有其他错误。

帮助?

15 个答案:

答案 0 :(得分:49)

文件中的属性是否设置为编译?

答案 1 :(得分:23)

我因为我的class library项目之一 was set acceddentaly成为控制台应用

而对此错误感到困难

因此请确保您的类库项目是输出类型

中的类库

enter image description here

答案 2 :(得分:20)

哦,我也在看这个问题。在我看来,解决方案太简单了。 我在解决方案中添加了一个新的空项目。新添加的项目将自动设置为控制台应用程序。但由于添加的项目是一个“空”项目,因此该新项目中不存在任何Program.cs。 (正如预期的那样)

我需要做的就是将项目属性的输出类型更改为类库

答案 3 :(得分:12)

如果您有WPF或Silverlight应用程序,请确保App.xaml具有“ApplicationDefinition”作为文件属性上的BuildAction。

答案 4 :(得分:5)

检查项目的属性。在“应用程序”选项卡上,选择您的Program类作为启动对象:

alt text

答案 5 :(得分:4)

这很奇怪。您的程序是否已成功编译并运行,并且仅在“发布”时失败,或者现在每次编译都失败?

另外,您是否将文件的属性“Build Action更改为Compile以外的其他内容?

答案 6 :(得分:2)

对我来说,发生了同样的错误,因为我重命名了Program类的名称空间
项目的“应用程序”选项卡中的“启动对象”字段仍引用旧命名空间。选择新的启动对象解决了问题,并从该列表中删除了过时的条目。
您可能还想在同一“应用程序”选项卡中更新“默认命名空间”字段。

答案 7 :(得分:1)

我发现Program.cs文件不是解决方案的一部分。 我做了一个添加现有项目并将文件(Program.cs)添加回解决方案。

这更正了错误: 错误1程序'.....不包含适用于入口点的静态'Main'方法

答案 8 :(得分:1)

Main方法放在Visual Studio中作为启动对象正确配置的类中非常重要:

  • 在项目资源管理器中右键单击您的项目;选择"属性......"
  • 在属性对话框中,选择"应用程序"标签
  • 在应用程序标签中,从启动对象的下拉列表中选择SimpleAIMLEditor.Program

现在再次运行您的应用程序。错误将消失。

答案 9 :(得分:1)

我遇到了这个问题,其原因是我没有使用最新版本的C#(撰写本文时为C#7.3),所以我不得不将下面的internal访问修饰符更改为public

internal class Program
 {
    public static void Main(string[] args)
    {
        //My Code
    }
  }

或修改.csproj以使用最新版本的C#(这样一来,我仍可以将上面的类保留为internal):

<PropertyGroup>
    <LangVersion>latest</LangVersion>
    <NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>

答案 10 :(得分:0)

我的问题是我不小心为Main

设置了参数

static void Main(对象值

感谢我的重构工具。花了几分钟才弄清楚,但应该帮助一路上的人。

答案 11 :(得分:0)

在我的情况下(提出的解决方案都不适合),问题是我使用async/await,其中main方法的签名看起来是这样的:

static async void Main(string[] args)

我只是删除了async,所以main方法看起来像这样:

static void Main(string[] args)

我还删除了await的所有实例,并使用.Result进行异步调用,因此控制台应用程序可以愉快地进行编译。

答案 12 :(得分:0)

我遇到了这个错误,并通过此解决方案解决了。

--> Right click on the project

--> and select "Properties"

--> then set "Output Type" to "Class Library".

答案 13 :(得分:0)

我变了

public static void Main(string[] args)

public async static void Main(string[] args)

问题在于它需要是一个任务:

public async static Task Main(string[] args)

答案 14 :(得分:-1)

对我有用的是:关闭MS Visual Studio,然后启动Visual Studio并打开解决方案。错误消息消失了。