讲师中心 微信公众号
AI工具推荐 视频效率加速

Avalonia怎么在macOS上打包应用 Avalonia macOS发布方法

轻磊小哥_6857

轻磊小哥_6857

发布时间:2025-12-22 15:58:03

|

596人浏览过

|

来源于php中文网

原创

在 macOS 上打包 Avalonia 应用需通过 dotnet CLI 与 Dotnet.Bundle 工具链生成规范 .app 包:先配置 .csproj 添加 Bundle 元信息及图标,再执行 publish 命令生成 MyApp.app;随后用 codesign 签名、notarytool 公证并 stapler 钉住票证,最终可选打包为 DMG 镜像。

avalonia怎么在macos上打包应用 avalonia macos发布方法

在 macOS 上打包 Avalonia 应用,核心是生成符合 Apple 生态规范的 .app 包,并完成签名与公证(Gatekeeper 要求)。整个流程不依赖 Xcode 图形界面,主要靠 dotnet CLI + Dotnet.Bundle 工具链完成。

配置项目文件(.csproj)

这是打包前提,必须显式声明 macOS 专用属性:

  • 添加 Dotnet.Bundle 包引用:
    <packagereference include="Dotnet.Bundle" version="*"></packagereference>
  • 在 <propertygroup></propertygroup> 中设置 Bundle 元信息(关键字段不能遗漏):
    <cfbundlename>MyApp</cfbundlename>
    <cfbundledisplayname>MyApp</cfbundledisplayname>
    <cfbundleidentifier>com.example.myapp</cfbundleidentifier>
    <cfbundleversion>1.0.0</cfbundleversion>
    <cfbundleshortversionstring>1.0</cfbundleshortversionstring>
    <cfbundlepackagetype>APPL</cfbundlepackagetype>
    <cfbundleexecutable>MyApp</cfbundleexecutable>
    <cfbundleiconfile>AppIcon.icns</cfbundleiconfile>
    <nsprincipalclass>NSApplication</nsprincipalclass>
    <nshighresolutioncapable>true</nshighresolutioncapable>
  • 确保 AppIcon.icns 文件已放入项目根目录或 Resources/ 目录,并在 <itemgroup></itemgroup> 中标记为 <bundleresource></bundleresource> 或 <content></content> 并设 CopyToOutputDirectory 为 PreserveNewest

执行打包命令

在项目根目录终端中运行:

word-chinese-automation
word-chinese-automation

中文 Word 文档自动化校对工具。当用户需要对中文文本或 Word 文档进行标点符号检查、语法检查、错别字检查时使用此 skill。触发词:语法检查、错别字、标点符号、校对、检查文档。

下载
dotnet publish -c Release -r osx-x64 --self-contained true -p:PublishTrimmed=true -p:PublishSingleFile=false

注意:
– -r osx-x64(Intel)或 -r osx-arm64(Apple Silicon)需按目标机器匹配;
– PublishSingleFile=false 是推荐选项,因 macOS Bundle 要求结构化目录(含 Contents/ 子目录),单文件模式不兼容;
– 输出路径默认为 bin/Release/net8.0/osx-x64/publish/,其中会生成 MyApp.app 文件夹。

签名与公证(上架/分发必需)

未签名的 .app 在 macOS 10.15+ 无法启动(“已损坏”提示):

  • 代码签名:使用 Apple 开发者证书(需加入 Apple Developer Program):
    codesign --force --deep --sign "Developer ID Application: Your Name (ABC123)" --options runtime MyApp.app
  • 公证(Notarization):上传到 Apple 服务验证安全策略:
    xcrun notarytool submit MyApp.app --keychain-profile "AC_PASSWORD" --wait
    (需提前配置 notarytool 凭据)
  • Stapling(钉住公证票证):
    xcrun stapler staple MyApp.app

可选:制作 DMG 安装镜像

提升用户安装体验,可用脚本自动化生成带拖拽图标的 DMG:

  • 准备背景图、应用图标、别名(指向 Applications)
  • 使用 hdiutil 创建并配置:
    hdiutil create -volname "MyApp" -srcfolder "MyApp.app" -ov -format UDZO MyApp.dmg
  • 更完整方案可参考 Avalonia 官方示例中的 bundle.sh 脚本(支持自动检测芯片架构)

完成签名和 stapling 后,双击即可正常运行,且能通过 Gatekeeper 验证。整个流程无需 Visual Studio 或 Rider,纯命令行驱动,适合 CI/CD 集成。

热门AI工具

更多
码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1809

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1211

2024.06.27

macOS怎么切换用户账户
macOS怎么切换用户账户

在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

5284

2025.05.09

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

506

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

345

2026.05.13

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

0

2026.11.03

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn