You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022 17.2.5报错BC30420:未找到'Sub Main'且启动对象无法修改

VS2022 VB.NET项目BC30420报错:'Sub Main' was not found,启动对象下拉仅显示Sub Main无窗体选项

故障根因

这个问题是重命名初始窗体时VS没有同步更新项目配置导致的:

  • VB.NET WinForms项目的启动对象配置存储在.vbproj项目文件中,你通过设计器修改窗体Name属性、解决方案资源管理器修改文件名的两步操作,在部分VS2022版本(包括你用的17.2.5)中不会自动同步更新项目文件里旧的Form1启动对象指向
  • 重命名完成后未触发项目配置全量重载时,VS靠缓存可以正常运行程序;当你新增第二个窗体触发项目配置重新解析时,原配置中指向的你的项目根命名空间.Form1类已经不存在,VS无法识别合法的窗体启动入口,就会回退到查找Sub Main作为启动点,同时启动对象下拉列表因扫描不到有效可启动窗体,仅显示Sub Main选项,最终抛出BC30420找不到入口点的错误。

修复步骤

按以下顺序操作即可解决:

  1. 关闭当前VS2022窗口,打开项目所在的本地文件夹,找到后缀为.vbproj的项目配置文件,用任意纯文本编辑器(系统自带记事本即可)打开
  2. 在文件中搜索<StartupObject>节点,你会看到节点内的值为旧的无效类路径,格式类似:
    <StartupObject>YourRootNamespace.Form1</StartupObject>
    
  3. 将节点内的值替换为你需要设置为启动项的窗体的完整类名:
    • 如果要启动重命名后的登录窗体,就替换为YourRootNamespace.FormLogin
    • 如果要启动新增的第二个窗体,就替换为YourRootNamespace.你的新窗体类名

    根命名空间可以通过打开任意窗体的后置代码,查看代码顶部的Namespace声明获取,也可以后续在项目属性页核对

  4. 保存修改后的.vbproj文件,重新用VS2022打开项目
  5. 重新生成项目,此时BC30420报错会直接消失,进入项目属性的启动对象下拉列表,就能看到所有可用的窗体选项,可自由切换启动对象。

兜底排查(如果上述操作后仍有问题)

  • 回到VS中右键项目名称,选择「卸载项目」,卸载完成后再次右键选择「重新加载项目」,强制VS刷新所有类文件的索引缓存
  • 逐个检查窗体文件的类名匹配:打开每个窗体的.vb后置代码和对应的.Designer.vb文件,确认类声明和文件名一致,比如FormLogin.vb中是Public Class FormLogin,对应设计器文件中是Partial Class FormLogin,不存在类名和文件名错配的情况
  • 核对项目属性-应用程序页的「应用程序类型」,确认选中的是「Windows 窗体应用」,如果误选为类库,项目不会将窗体识别为可启动对象。

内容的提问来源于stack exchange,提问作者DEVTE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:57:16