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