【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

目前双击直接运行好像起不来,只能控制台运行,不知道是不是系统问题。

posted on 2023-06-20 23:15  梦琪小生  阅读(555)  评论(0编辑  收藏  举报

导航