C#程序无合适入口点Main方法 清空CSC文件编译报错
编译报错信息
编译器抛出错误:
Program does not contain a suitable 'Main' method for entry point
中文说明:程序不包含适合作为入口点的“Main”方法
问题复现场景
- 误删项目自动生成的
Main入口方法后未察觉,保存更改后退出开发环境 - 后续手动新建类、编写新的
Main方法后,仍触发相同报错 - 报错条目指向CSC文件,点击后无法打开对应内容;确认此前曾误打开CSC文件并清空了文件内全部内容
- 报错截图参考:

问题根因
清空CSC文件是编译临时文件损坏的直接诱因,加上删除原有入口方法后,项目配置文件里的启动对象配置未同步更新,导致编译器无法定位到合法入口点,和系统层面的CSC编译器无关。
解决步骤
按以下顺序操作,绝大多数同类问题都能解决:
- 第一步:清理损坏的编译临时文件
关闭所有打开当前项目的开发工具,进入项目根目录,直接删除bin、obj两个文件夹,这两个文件夹存放的全是编译过程生成的临时文件,删除不会损失任何业务源代码,重新编译时会自动生成。 - 第二步:校验并修正项目启动配置
找到项目根目录下后缀为.csproj的项目配置文件,用文本编辑器打开,查找<StartupObject>节点:- 如果该节点配置的是你之前删除的旧类名,直接删除整个
<StartupObject>节点,让编译器自动查找入口 - 如果你要指定新的入口类,就把节点内容改成新类的完整类名(必须包含命名空间,格式为
命名空间.类名)
- 如果该节点配置的是你之前删除的旧类名,直接删除整个
- 第三步:确认Main方法符合编译器识别规范
手动编写的Main方法必须满足以下所有要求,否则编译器不会识别为合法入口:- 必须是
static静态方法 - 方法名严格为
Main(首字母必须大写,其余字母小写) - 返回值只能是
void或者int - 参数列表为空,或者仅带一个
string[]类型的参数
合法写法示例:
namespace MyProject { internal class Program { static void Main(string[] args) { // 项目启动逻辑写在这里 } } } - 必须是
- 第四步:重新编译验证
重新用开发工具打开项目,先执行NuGet包还原操作,再执行重新生成解决方案。如果仍报CSC相关错误,直接打开包管理器控制台执行dotnet build命令,会输出精准到代码行的错误提示,不会再出现点击报错无法定位文件的问题。 - 兜底方案
如果以上操作都未解决问题,直接新建一个同框架版本的空项目,把你自己编写的业务代码文件(排除自动生成的旧启动文件、bin/obj目录)全部拷贝到新项目中,重新配置依赖引用即可,整个过程耗时不超过10分钟。
内容的提问来源于stack exchange,提问作者SamSon
相关产品推荐
相关产品推荐

