当前位置: 首页 > news >正文

VS下C++及C#项目打包发布方法

一.打包为单一exe文件

1.打开项目属性页(右键项目 → 属性)

2.选择配置(如 Release)

3.项目属性→ C/C++ → 代码生成→ 运行库

  将 运行时库(Runtime Library) 设置为:

  /MT(Release 模式)

  /MTd(Debug 模式)

注意:不要选择 /MD 或 /MDd,否则会动态链接运行时库。

4.程序测试查看

  程序要加入system("pause");或者while(1)循环,这样cmd窗口不会马上消失,便于测试查看

5.其他注意事项

a.确保所有依赖库也是静态链接

  将这些库以静态库(.lib)形式链接,而不是动态链接(.dll)。

b.如果使用的是第三方动态库(如 zlib、libpng 等),则需要:

  找到对应的静态库版本(.lib)

  或者自行编译为静态库

  然后将它们链接到你的项目中

  提示:如果使用的是动态库(.dll),即使你静态链接了 VC++ 运行时,exe 仍然会依赖这些 dll,无法做到“完全独立”。

6.验证依赖项(确保无外部依赖)

使用以下工具检查你的 exe 是否还依赖其他 DLL:

方法一:使用 Dependency Walker(适用于旧版项目)

下载地址:http://www.dependencywalker.com/

打开你的 exe 文件,查看是否还有未解析的依赖项。

方法二:使用 VS 自带的 dumpbin 工具

dumpbin.exe  /DEPENDENTS  your_program.exe

如果输出中没有列出任何外部 DLL(如 vcruntime140.dll),说明你已经成功静态链接了所有依赖。

安装路径: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\Hostx86\x64\dumpbin.exe

静态库 vs 动态库:

静态库(.lib):编译时链接到 EXE,不显示为依赖项

动态库(.dll):运行时加载,可用 /DEPENDENTS 查看

二.进阶:单文件打包(可选)

如果你希望将所有依赖(包括 dll)打包成一个 单个 exe 文件,可以使用以下工具:

Costura.Fody(适用于 .NET 项目)

Resource Hacker + 自定义加载器(适用于 C++ 项目,但复杂)

Enigma Virtual Box(将 exe 和 dll 打包成一个 exe)

这些方法较为复杂,适用于高级用户,建议优先使用静态链接实现“独立 exe”。

三.C#/.NET 项目(.NET Core/.NET 5+ 或 .NET Framework)打包方法

1.右键项目 → 发布(Publish)

在解决方案资源管理器中,右键点击项目 → 选择 发布。

2.选择目标位置

可以选择本地文件夹(如 Folder)或云服务(如 Azure)。

3.配置发布选项

框架(Target Framework) :选择目标框架(如 .NET 6.0)。

4.部署模式(Deployment Mode) :

框架依赖(Framework-dependent):需要目标机器安装对应 .NET 运行时。

独立(Self-contained):包含所有依赖,无需安装运行时(生成体积较大)。

目标运行时(Target Runtime) :选择平台(如 win-x64、win-x86)。

5.发布

点击 发布 后,生成的 .exe 文件和依赖项会输出到指定文件夹。

6.注意

C#项目编译后再bin目录下生成的exe会包含需要的dll文件,exe在文件夹内是可以直接运行的,其文件内的内容和发布的内容是一致的。所以和c++项目的打包有很大区别的,C#的更简单、更方便。

相关文章:

  • Cursor + Claude 4:微信小程序流量主变现开发实战案例
  • C++ 中的依赖注入(Dependency Injection)
  • 【论文阅读】Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting
  • 菲尔斯特非接触测温技术的核心应用与选型指南
  • 网络安全问题及对策研究
  • 5分钟申请edu邮箱【方案本周有效】
  • Linux 与 Windows:哪个操作系统适合你?
  • 用 Vue 做一个轻量离线的“待办清单 + 情绪打卡”小工具
  • 计算A图片所有颜色占B图片红色区域的百分比
  • 简简单单探讨下starter
  • 手动移植UGUI
  • 网络原理1
  • Baklib内容中台AI重构智能服务
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(31):そう
  • graphviz, dot, Error: lost rA sA edge; 独立的模块
  • CVE-2021-34429源码分析与漏洞复现
  • CCF CSP 第37次(2025.03)(3_模板展开_C++)(哈希表+stringstream)
  • Python数据可视化科技图表绘制系列教程(一)
  • 基于Python学习《Head First设计模式》第五章 单件模式
  • Docker部署与应用、指令
  • 建筑英才网app/杭州网站优化服务
  • h5营销型网站功能/百度seo竞价推广是什么
  • 做网站首选智投未来1/宁波正规优化seo公司
  • 中小企业品牌网站建设/崇左seo
  • 郑州做网站公司排/宁波网站推广
  • 网站建设招标文件范本/搜索网页内容