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

C#中WinForms+WCF混合项目Main()未调用及同步启动问题

解决WCF服务库转Windows应用后调试不进入Main()的问题

问题根源

VS保留了原WCF Service Library的调试默认配置,会优先启动WCF服务托管进程,而非执行Windows应用的Main入口方法。

解决步骤

  • 修改调试启动设置
    右键项目 → 选择「属性」→ 切换到「调试」选项卡:

    • 将「启动操作」从「启动WCF服务」改为「启动项目」
    • 确保没有勾选「启动外部程序」,保持默认的项目启动逻辑
  • 确认入口点配置
    右键项目 → 「属性」→ 「应用程序」选项卡:

    • 检查「启动对象」是否选中了包含Main方法的类(通常是Program)
    • 确保Main方法标记了[STAThread]属性,且内部同时启动WCF服务和WinForm:
      [STAThread]
      static void Main()
      {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          
          // 初始化并启动WCF服务
          using (var serviceHost = new ServiceHost(typeof(YourWcfServiceImpl)))
          {
              serviceHost.Open();
              Debug.WriteLine("WCF服务已启动");
          }
          
          // 启动WinForm界面
          Application.Run(new MainForm());
      }
      
  • 清理重建项目

    • 执行「项目 → 清理」清除旧编译文件
    • 再执行「项目 → 重建」重新生成
    • 重启Visual Studio避免配置缓存干扰

验证效果

调试启动项目时,VS会先执行Main方法,同时启动WCF服务和WinForm界面,断点可以正常命中Main方法,手动启动EXE也能保持原有正常运行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:10:29