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

如何将多个独立C#控制台项目合并编译为单个exe文件

实现方案

完全可以实现,用.NET原生功能即可完成,不需要依赖第三方工具,具体操作步骤如下:

1. 整合所有项目到同一解决方案

  • 打开Visual Studio,新建一个空白解决方案,自定义命名即可
  • 右键解决方案资源管理器中的解决方案节点,选择「添加」→「现有项目」,依次导入program_1、program_2、program_3三个控制台项目的.csproj文件,原项目各自的旧.sln文件可以直接忽略,不需要处理
  • 选定一个项目作为主入口项目(建议选你需要作为启动主体的那个),右键该项目选择「设为启动项目」
  • 右键主入口项目的「依赖项」节点,选择「添加项目引用」,勾选另外两个项目,确认添加引用关系。

2. 调整入口冲突,整合执行逻辑

三个独立控制台项目默认各自带有Main入口方法,C#程序仅允许存在一个全局入口,需要把非主项目的入口调整为普通可调用方法

  • 分别打开另外两个非主项目的Program.cs文件,将原有Main方法的访问权限改为public static,同时修改方法名避免冲突,比如把program_2的入口改名为RunProgram2()、program_3的入口改名为RunProgram3(),方法内部的原有业务逻辑完全不需要改动
  • 回到主入口项目的Program.cs,按照你的业务需求调用另外两个项目的运行方法即可,.NET 6+ 顶级语句的示例代码如下:
// 主项目自身原有执行逻辑
Console.WriteLine("主程序启动");

// 按需调用另外两个程序的逻辑
Program1.Program.Main(args);
Program2.Program.RunProgram2(args);
Program3.Program.RunProgram3(args);

Console.WriteLine("所有逻辑执行完毕");
  • 如果需要做参数分发(比如给exe传不同参数启动对应子程序),直接在主入口里加分支判断即可,比如传入/p1就执行program1的逻辑,传入/p2就执行program2的逻辑,按需写判断就行。

3. 配置单文件发布

  • 右键主入口项目,选择「发布」,发布目标选择「文件夹」
  • 打开发布配置面板,按以下参数设置:
    • 部署模式:选择独立
    • 目标运行时:选择对应部署环境的RID,比如给Windows 64位系统用就选win-x64,不要选「可移植」
    • 勾选生成单个文件
    • 可选勾选启用本机AOT编译,可以大幅降低启动时间、缩小最终exe体积,注意排查代码的AOT兼容性问题即可
    • 勾选裁剪未使用的代码,会自动移除没有被调用的程序集,进一步压缩exe体积
  • 点击发布按钮,等待执行完成后,发布目录下生成的.exe文件就是你需要的单文件可执行程序,不需要附带其他dll或配置文件(有特殊配置需要单独带除外),直接拷贝到目标机器就能运行。
常见踩坑提醒
  • 如果三个项目存在类名、命名空间重名冲突,右键对应冲突项目→「属性」→「应用程序」,修改默认命名空间为不重复的名称(比如Program1、Program2、Program3)即可
  • 如果你用的是老旧的.NET Framework而非.NET Core/.NET 5+版本,原生不支持单文件发布,可以用ILMerge工具合并生成的dll和exe,核心逻辑还是先整合项目引用、调整入口冲突,再做合并,更建议升级到现代.NET版本,省掉额外工具的麻烦
  • 三个项目如果各自带有appsettings.json等配置文件,把配置项合并到主项目的配置文件中即可,不需要保留多个配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:09:46