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