【Avalonia】Avalonia 如何发布Linux应用程序
Avalonia 11.0.0 + Centos 7 + VS2022 + Net6.0
第一步,先安装环境
首先,先配置.net6环境
添加 Microsoft 包存储库
安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装 SDK
.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:
sudo yum install dotnet-sdk-6.0
检查 SDK 版本
可使用终端查看当前安装的 .NET SDK 版本。 打开终端并运行以下命令。
dotnet --list-sdks
第二步,发布应用程序
选中项目右键发布,然后点击更多设置,可以选择独立或者依赖框架,也可以勾选独立文件,这样会打包成一个可执行文件。
第三步,将应用程序复制到Linux系统下,我使用的是Centos 7的桌面版本
1.双击直接运行,报错不能打开
2.使用控制台运行 ./CommandSample 报了一下错误
Unhandled exception. System.Invalid0perationException: Default font family name can't be null or empty.
修改Program.cs
public static AppBuilder BuildAvaloniaApp() { FontManagerOptions options = new(); options.DefaultFamilyName = "SimHei"; options.FontFallbacks = new[] { new FontFallback { FontFamily=new FontFamily("avares://CommandSample/Assets/Fonts/simhei.ttf#SimHei") } }; // No need to set default for Windows return AppBuilder.Configure<App>() .UsePlatformDetect() .LogToTrace() .UseReactiveUI() .With(options); }
其中SimHei是字体名,这个可以自己选一个字体,并且放到/Assets/Fonts/simhei.ttf 路径,然后设置为AvaloniaResource
FontForge
自己下载的字体可能不知道名字,可以通过FontForge查看。
首先选中字体右键用FontForge打开
到这一步之后,Default font family name can't be null or empty.就消失了。
3.但是又出现了新的问题
Unhandled exception. System.InvalidOperationException: Could not create glyphTypeface.
目前就找到了这个解决方案:
拷贝自己所用的字体到如下路径:(需要管理员权限)
/usr/share/fonts/chinese/simhei.ttf
运行fc-cache -f -v 命令,更新字体缓存
fc-cache -f -v
然后再回到控制台运行 ./CommandSample
目前双击直接运行好像起不来,只能控制台运行,不知道是不是系统问题。