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

如何将C# WPF应用打包为独立单EXE文件?

如何将WPF应用打包为独立单EXE文件?

问题诊断

核心问题是发布命令参数错误:-r参数需指定具体运行时标识符(RID,如win-x64),而非构建配置Release;同时缺少自包含发布的关键配置,导致依赖未被打包进单EXE。

解决方案

1. 修正项目配置(csproj)

在现有配置基础上补充SelfContained=true,确保所有依赖(包括.NET运行时)都被打包:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net7.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWPF>true</UseWPF>

    <PublishSingleFile>true</PublishSingleFile>
    <SelfContained>true</SelfContained> <!-- 关键:开启自包含发布 -->
    <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
    <!-- 可选优化:压缩并裁剪未使用代码(注意WPF兼容性) -->
    <CompressSingleFile>true</CompressSingleFile>
    <PublishTrimmed>true</PublishTrimmed>
  </PropertyGroup>
</Project>

2. 执行正确的发布命令

根据目标系统选择对应的RID,例如:

  • 64位Windows:
dotnet publish -c Release -r win-x64
  • 32位Windows:
dotnet publish -c Release -r win-x86

3. 获取独立EXE

发布完成后,独立可运行的EXE位于以下路径:
bin/Release/net7.0-windows/[你的RID]/publish/
该EXE可单独复制运行,无需额外依赖文件。

关于ILMerge替代方案

官方的**单文件发布(Single File Publish)**已完全替代ILMerge,是.NET Core/.NET 5+推荐的单EXE打包方案,无需第三方工具。若遇代码裁剪导致的WPF功能异常,可关闭PublishTrimmed参数,或通过TrimmerRootAssembly配置添加裁剪保留规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:01:44