C#如何生成独立可执行.exe文件而非安装程序?
生成C#独立单EXE文件的方法
针对你遇到的情况,现在的C#项目(尤其是.NET Core/.NET 5+版本)默认发布流程和旧.NET Framework不同,以下是两种可靠的生成独立单EXE的方法:
方法一:使用.NET CLI命令发布
打开命令提示符或终端,导航到你的项目根目录,执行以下命令(以Windows x64平台为例):
dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true
参数说明:
-c Release:发布Release版本(生产环境用)-r win-x64:指定目标平台为Windows 64位,可根据需求换成win-x86或win-arm64--self-contained true:将.NET运行时打包进EXE,无需目标机器预装.NET环境/p:PublishSingleFile=true:生成单个可执行文件/p:PublishTrimmed=true:裁剪未使用的依赖代码,减小文件体积
执行完成后,单EXE文件会生成在项目目录\bin\Release\netX.x\win-x64\publish路径下。
方法二:使用Visual Studio图形界面发布
- 右键你的项目,选择「发布」
- 选择「文件夹」作为发布目标,点击「下一步」
- 在发布配置页面:
- 配置文件选择「Release」
- 目标框架选择你的项目对应的.NET版本
- 勾选「独立」选项,目标运行时选择
win-x64(或其他需要的平台)
- 展开「文件发布选项」,勾选「生成单个文件」,可选勾选「裁剪未使用的代码」来缩小体积
- 点击「发布」,完成后在指定的输出文件夹中即可找到独立单EXE。
针对旧.NET Framework项目(.NET 4.x)
如果你的项目基于旧.NET Framework,依然可以从Release目录获取EXE,但如果存在依赖DLL,可使用ILMerge工具合并为单文件:
- 安装
ILMergeNuGet包到项目中 - 在项目属性的「生成事件」-「生成后事件命令行」中添加类似命令:
替换版本号和依赖DLL名称,生成后即可得到合并后的单EXE。"$(SolutionDir)packages\ILMerge.x.x.x\tools\ILMerge.exe" /out:"$(TargetDir)YourSingleApp.exe" "$(TargetPath)" "$(TargetDir)Dependency1.dll" "$(TargetDir)Dependency2.dll"
内容的提问来源于stack exchange,提问作者Penelope
相关产品推荐
相关产品推荐

