Avalonia单文件EXE打包依赖.NET 6+原生Single-file publishing功能,需设TargetFramework≥net6.0、PublishSingleFile=true、SelfContained=true、指定RID(如win-x64),并推荐IncludeNativeLibrariesForSelfExtract=true、PublishTrimmed=false。
在 Avalonia 中实现单文件 EXE 打包,本质是利用 .NET 6+ 的 Single-file publishing 功能,而非 Avalonia 自身特有机制。只要项目基于 .NET 6 或更高版本(推荐 .NET 8),就能原生支持生成一个独立的、无需安装运行时的 EXE 文件。
单文件发布要求项目使用 .NET 6 或更新版本,且 SDK 类型为 Microsoft.NET.Sdk(Avalonia 模板默认满足)。检查你的 .csproj 文件顶部是否类似:
在 .csproj 中添加以下发布属性(建议放在 内):
true :启用单文件模式true :打包 .NET 运行时(必须设为 true 才能脱离目标机器环境)true (可选但推荐):确保 native 库(如 SkiaSharp、Direct2D 相关 DLL)能正确解压执行false (推荐初学者设为 false):避免因裁剪导致 Avalonia 或 Skia 运行时异常(如 UI 黑屏、控件不渲染)在项目根目录运行命令(以 Windows x64 为例):
dotnet publish -c Release -r win-x6
4 --self-contained true /p:PublishSingleFile=true
生成路径通常为:bin\Release\net8.0\win-x64\publish\YourApp.exe。该 EXE 可直接双击运行,无需提前安装 .NET Desktop Runtime。
注意:-r win-x64 是必需的——Avalonia 桌面应用必须指定运行时标识符(RID),不能省略。
%TEMP%\dotnet\ 下,后续启动会复用.csproj 中显式设置 app.ico,且图标文件要已加入项目dotnet run;发布前再构建基本上就这些。Avalonia 本身不干预发布流程,只要 .NET 层配置对了,单文件 EXE 就能正常加载窗口、渲染 UI、响应事件。不复杂但容易忽略 RID 和 SelfContained 的组合要求。