CPF C#跨平台桌面UI框架,支持Windows,Mac,Linux,支持龙芯、飞腾等CPU
系列教程
CPF 入门教程 - 各平台各系统发布说明(九)
一般建议根据发布平台的注释掉其他平台的适配器,以及删除其他平台的引用,用来减少发布的dll数量。比如如果发布Windows上的,可以把Mac和Linux的注释掉
一般的,项目右键,选择发布
选择文件夹
设置好发布路径,完成。
选择netcoreapp3.0,如果你用的NET5的话,就选NET5,NET4是用来支持XP的,你可以根据需要改。net4版本用的是GDI+渲染,性能会稍微差一点。
选择独立发布,独立发布可以不需要安装运行时就可以运行,就是程序包大了一些。独立发布只能是Netcore的,不支持net4。 win7上运行netcore可能需要打补丁。
根据需要选择你的目标运行时
裁剪程序集,一般选上,可以减少发布的程序包大小。至于单文件,你根据自己的需求选择。
设置好了之后,按发布按钮,第一次发布的时候可能会发布失败,你可以再点发布按钮,再发布一下。
打开你设置的发布目录,里面就是发布后可以运行的程序,直接复制到对应平台就能运行,默认情况下Linux和Mac的可执行文件是没有后缀的。
如果选择NET5的话,Linux上提供的可执行文件无法直接双击启动,需要通过控制台启动,拖到控制台,按Enter启动
各个平台打包方式,如果只是自己用的,不打包也可以运行
注意:
对于Linux的arm和龙芯的,需要带上对应的libSkiaSharp.so,其他CPU指令集平台默认有带libSkiaSharp.so
Windows
可以找第三方程序打包工具,比如 SetupFactory、Advanced Installer 等等
Mac
默认案例源码里带打包文件夹。App.app文件夹,把文件夹解压出来,把Netcore独立发布出来的所有dll和那些资源都移到App.app/ Contents/ MacOS/
Info.plist 用记事本打开 <key>CFBundleExecutable</key>这个键下面的值改成你的应用程序的名称,没有exe和dll后缀的。
CFBundleName是上面菜单名称
CFBundleIdentifier是程序唯一标识,该标识符采用了类似Java包的命名方式,例如com.apple.myapp。该束标识符可以在运行时定位束。预置系统使用这个字符串来唯一地标识每个应用程序。
当然把这个App.app文件夹复制到Mac下就能运行了。不过一般要打包为一个文件。
把App.app整个目录压缩打包为tar、tgz、iso、dmg 其中一种格式,如果是其他压缩格式可能会导致没有权限运行
Linux
打包可以用 checkinstall 或者 dpkg 具体使用方法,你们自己百度吧
龙芯
由于指令集的问题,龙芯平台的程序发布,不能使用独立发布,必须改成依赖框架和可移植选项,而且必须根据当前龙芯提供的运行时版本选择netcore框架版本
到 https://github.com/gsvm/loongson-dotnet/releases 下载对应的运行时,解压,然后配置环境变量
export PATH= "$PATH://自己改为运行时目录/" |
然后就可以用 dotnet XXX.dll 命令启动你的程序
打包的时候,你可以把运行时也打包到一起,启动的时候通过快捷方式的启动路径 Exec=/usr/local/bin/安装路径/dotnet/dotnet /usr/local/bin/安装路径/你的程序.dll
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库