如何修复WPF错误:“程序不包含适用于入口点的静态'Main'方法”?

183

突然间我的整个项目都无法编译,显示以下信息:

程序“path_to_obj_project_folder”没有包含适用于入口点的静态“Main”方法

我没有更改项目属性,只是添加了一些类,将一些其他类移动到文件夹中。这是一个WPF应用程序项目,所以应该一切正常。入口点应该在它应该在的地方,文件App.xaml根本没有修改 :(

我该怎么做才能让它重新工作?

注意
供参考:如果重命名了App.xaml,可能会出现此问题。正如OP所述,App.xaml没有被修改;但是,对于任何重命名App.xaml的人来说,这是额外添加的说明。

13个回答

475

检查App.xaml的属性。 Build Action是否仍然是ApplicationDefinition


10
谢谢,这解决了部分问题。我把一个旧项目的所有文件复制到了一个新的“Windows Store App”项目中,但“生成操作(Build Action)”设置为了“页面(Page)”而不是“应用定义(ApplicationDefinition)”。我将其改回了“应用定义”,但还需要删除“obj\Debug”文件夹。 - Richard H
4
+1:太棒了!真正的救星。我刚要创建一个新项目并复制所有内容,但这个方法解决了问题。我学到了什么:不要轻易动 App.xaml 这个文件...它会反咬一口。 - reSPAWNed
1
我还不得不手动删除obj\Debug;RebuildAll也没有解决它,不知道为什么... - Jay Borseth
1
在VS 2017 UWP应用程序中遇到了同样的问题。构建是针对Page而不是ApplicationDefinition - Paulustrious
4
当您排除并重新包含App.xaml文件时,Build Action切换为Page - M. Jahedbozorgan

46

也许项目的属性->应用中的"输出类型"必须是"类库"而不是控制台或窗口应用程序。


当使用CLI编译器时,可以通过-t:library参数指定_Class Library_输出类型。 - Glutexo

22

如果有人遇到同样的问题...我曾经也出现过这个错误,后来发现是我的App.xaml文件中的<Application.Resources>部分有问题。我在资源字典标签之外添加了一个资源,导致出现了这个错误。


我有一个稍微不同的变化。我的Application.Resources标签是空的,删除它们后问题得到解决。 - Y C

6
在我的情况下(手动重命名应用程序命名空间后),我不得不在项目属性中重新选择启动对象。

5

如何检查构建操作

根据Kent Boogaart的回答:

  • 检查您的App.xaml属性:
  • 确保Build ActionApplicationDefinition

如何检查?

请参见我录制的Giphy:

请参见我录制的Giphy


2

在处理WPF/UPF应用程序时,如果您的项目的.csproj使用错误的SDK(即<Project Sdk="Microsoft.NET.Sdk">而不是<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">),也可能会出现此类错误。


如果您的文件已经被选为“ApplicationDefinition”,那么请尝试这个答案。这是在SO上第一个/真正/有效的答案。 - Phill

1

我在将.NET Framework v4.7.2更改为.NET Core 3.1时遇到了问题,但通过添加以下内容已经解决:

<PropertyGroup>
    <UseWPF>true</UseWPF>   
</PropertyGroup>

.csproj文件中。

1

项目属性 \ 输出文件 -> 选择类库 :)


1

当App.xaml(左键单击)属性/构建操作设置为Page时,我看到了这个错误消息。将其设置为ApplicationDefinition可以解决此问题。


1

我遇到了同样的错误,但后来发现我在 Main 方法中输入了小写 m 而不是大写 M。


是的,忘记了它是区分大小写的。谢谢! - Emanuel Vintilă
最好检查一下你的应用程序的“属性”是否已经正确地定义了默认的启动项目/类。https://dev59.com/Smkw5IYBdhLWcg3w9vJ- - Bimal Poudel

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