Avalonia项目在OpenKylin运行踩坑

这篇具有很好参考价值的文章主要介绍了Avalonia项目在OpenKylin运行踩坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Avalonia项目在OpenKylin运行踩坑

本篇博客记录OpenKylin开源操作系统中运行Avalonia项目遇到的各种问题,会一直更新,最新的内容请点击文末的链接跳转到我的博客原文地址查看。

1.Default font family name can't be null or empty

报错内容:

Unhandled exception. System.InvalidOperationException: Default font family name can't be null or empty.
   at Avalonia.Media.FontManager..ctor(IFontManagerImpl platformImpl) in /_/src/Avalonia.Base/Media/FontManager.cs:line 37
   at Avalonia.Media.FontManager.get_Current() in /_/src/Avalonia.Base/Media/FontManager.cs:line 59
   at Avalonia.AppBuilder.<>c__DisplayClass61_0.<ConfigureFonts>b__0(AppBuilder appBuilder) in /_/src/Avalonia.Controls/AppBuilder.cs:line 256
   at Avalonia.AppBuilder.SetupUnsafe() in /_/src/Avalonia.Controls/AppBuilder.cs:line 310
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 219
   at TerraMours.Chat.Ava.Program.Main(String[] args)

报错分析:

根据报错信息,应用程序在使用 Avalonia UI 框架时遇到了问题。报错信息表明默认字体系列名称为空或为空字符串。

可以通过以下命令查看系统已安装的字体列表:

fc-list

重点issue

这是一个很久的问题,参考这个issue

https://github.com/AvaloniaUI/Avalonia/issues/4427

尝试第一个解决方案(0.10版本及以前有效)

网上的解决方案,针对0.10版本及以前有效 解决方案一

由于 11.0.0 更改了 Avalonia.Skia.GlyphTypefaceImpl 的访问级别,从公共访问级别更改为内部访问级别,因此上述实现 Avalonia.Platform.IFontManagerImpl 的示例代码现在均不可用。

V11版本解决方案

1.修改环境变量 export Lang=en_ US.UTF-8

https://github.com/AvaloniaUI/Avalonia/issues/12140

将环境变量设置 export Lang=en_ US.UTF-8

1.打开终端。

2.运行以下命令来查看当前的 LANG 环境变量的值:

echo $LANG

3.如果当前的 LANG 值不是 en_US.UTF-8,就需要设置它为 en_US.UTF-8。可以使用以下命令来设置:

export LANG=en_US.UTF-8

4.使用 echo 命令验证环境变量是否已更改:

echo $LANG

5.如果您希望永久设置 LANG 变量,可以将上述命令添加到您的 shell 配置文件中(如 ~/.bashrc~/.bash_profile 等),这样每次启动终端时都会自动设置。

代码中修改掉linux不支持的字体

将字体修改后

 <Setter Property="FontFamily" Value="宋体,国标黑体,Simsun,微软雅黑,Microsoft YaHei,苹方-简,宋体-简" />

linux中没有宋体,会自动选择后面的国标黑体

成果展示

2.Cannot access a disposed context instance

报错记录

Unhandled exception. System.ObjectDisposedException: Cannot access a disposed context instance. A common cause of this error is disposing a context instance that was resolved from dependency injection and then later trying to use the same context instance elsewhere in your application. This may occur if you are calling 'Dispose' on the context instance, or wrapping it in a using statement. If you are using dependency injection, you should let the dependency injection container take care of disposing context instances.
Object name: 'ChatDbcontext'.
   at Microsoft.EntityFrameworkCore.DbContext.CheckDisposed()
   at Microsoft.EntityFrameworkCore.DbContext.get_ContextServices()
   at Microsoft.EntityFrameworkCore.DbContext.get_Model()
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityType()
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityQueryable()
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.System.Collections.Generic.IEnumerable<TEntity>.GetEnumerator()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Collections.ObjectModel.ObservableCollection`1..ctor(IEnumerable`1 collection)
   at TerraMours.Chat.Ava.Views.MainWindow.MainWindow_Loaded(Object sender, RoutedEventArgs e)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
   at Avalonia.Threading.SendOrPostCallbackDispatcherOperation.InvokeCore() in /_/src/Avalonia.Base/Threading/DispatcherOperation.cs:line 412
   at Avalonia.Threading.DispatcherOperation.Execute() in /_/src/Avalonia.Base/Threading/DispatcherOperation.cs:line 268
   at Avalonia.Threading.Dispatcher.ExecuteJob(DispatcherOperation job) in /_/src/Avalonia.Base/Threading/Dispatcher.Queue.cs:line 126
   at Avalonia.Threading.Dispatcher.ExecuteJobsCore() in /_/src/Avalonia.Base/Threading/Dispatcher.Queue.cs:line 181
   at Avalonia.Threading.Dispatcher.Signaled() in /_/src/Avalonia.Base/Threading/Dispatcher.Queue.cs:line 134
   at Avalonia.X11.X11PlatformThreading.CheckSignaled() in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 119
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken) in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 192
   at Avalonia.Threading.DispatcherFrame.Run(IControlledDispatcherImpl impl) in /_/src/Avalonia.Base/Threading/DispatcherFrame.cs:line 117
   at Avalonia.Threading.Dispatcher.PushFrame(DispatcherFrame frame) in /_/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs:line 53
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /_/src/Avalonia.Base/Threading/Dispatcher.MainLoop.cs:line 80
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 127
   at TerraMours.Chat.Ava.Program.Main(String[] args)

原因

在 Linux 环境下发生此错误可能是因为 Linux 环境的异步处理方式与 Windows 环境有所不同。

解决方案

去掉using

public void CreateDatabase()
{
    var context = new ChatDbcontext();
    context.Database.Migrate();
    VMLocator.ChatDbcontext = context;
}

然后,在其他需要使用 ChatDbcontext 的地方,使用 VMLocator.ChatDbcontext 来获取上下文实例。确保不要在其他地方使用 using 语句或调用上下文实例的 Dispose 方法。

3.openkylin会自动切换到平板模式

而且切换不回来,程序点不了

解决方案

可以通过桌面侧边栏进行PC/平板模式切换,唤出侧边栏的方法有:

点击任务栏上的侧边栏图标;

快捷键 super + A;----super对应Windows键

通过触摸手势,在屏幕右边缘向左短滑。

阅读如遇样式问题,请前往个人博客浏览: https://www.raokun.top

拥抱ChatGPT:https://ai.terramours.site

开源项目地址:https://github.com/raokun/TerraMours.Chat.Ava文章来源地址https://www.toymoban.com/news/detail-606803.html

到了这里,关于Avalonia项目在OpenKylin运行踩坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF向Avalonia迁移(三、项目结构)

    前提: Avalonia版本11.0.0 1.配置文件 1.1 添加配置文件 1.2 读取配置文件  添加System.Configuration.ConfigurationManager 2.样式 2.1 添加样式文件至Assets文件夹下  2.2 引用样式        打开App.axaml文件,添加StyleInclude Source=\\\"你要用的样式文件.axaml\\\"/,添加后该样式在整个应用生效。 3.资源

    2024年02月07日
    浏览(67)
  • WPF向Avalonia迁移(一、一些通用迁移项目)

    WPF:Visibility  其他参考文档 WPF: Avalonia : WPF:Style 开发文档 WPF: Avalonia :开发文档 ,样式设计加入了类似加入了CSS选择器的语法 控件迁移 参考文档        大多常用控件都是可以无缝迁移的,少数像RichTextBox这样的控件,Avalonia是没有的,但是影响不大。 其他 参考文

    2024年02月07日
    浏览(63)
  • .NET / C# 开发 Ubuntu Desktop 跨平台图形界面桌面程序 Avalonia - Visual Studio 安装/创建/运行指南 (一)

    Avalonia 是一个开源的跨平台应用程序框架,用于构建桌面应用程序。它使用 C# 和 XAML 进行开发,可以在 Windows、macOS、iOS、Android 及 Linux 等多个平台上运行。Avalonia 项目地址:https://github.com/AvaloniaUI/Avalonia 本文快速介绍如何入门使用 Avalonia 编写和执行 Ubuntu Desktop 图形界面桌面

    2024年02月01日
    浏览(71)
  • 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发

    项目简介 :目标是开发一个跨平台的AI聊天和其他功能的客户端平台。目的来学习和了解Avalonia。将这个项目部署在openKylin 1.0 的系统上。 为什么使用Avalonia :之前已经了解了基于Avalonia的项目在国产麒麟系统中运行的案例。正是Avalonia在跨平台的出色表现,学习和了解Avalon

    2024年02月17日
    浏览(58)
  • 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架

    Avalonia是.NET的一个跨平台UI框架,提供了一个灵活的样式系统,支持广泛的操作系统,如Windows、Linux、macOS,并对Android、iOS和WebAssembly提供了实验性支持。 之前已经了解了基于Avalonia的项目在国产麒麟系统中运行的案例。正是Avalonia在跨平台的出色表现,学习和了解Avalonia这个

    2024年02月16日
    浏览(59)
  • nacos踩坑之nacos运行报错

    在2021年年底的时候使用docker的方式体验了一波nacos,现在有需求所以需要运行nacos,结果一旦运行始终报错, 最开始以为是因为我是用arm服务器且不是nacos官方要求的JDK的原因, 为什么会这么想因为arm的环境是OpenJDK,OpenJDK和oracleJDK,有部分差异的 上官方要求的JDK结果还是同样报错

    2024年02月12日
    浏览(43)
  • vscode运行C语言踩坑记

    本文对Vscode运行C语言代码报错进行整理,重点是头文件路径正确仍然报错找不到路径的解决办法。 需要注意,VScode本身不具有编译运行代码能力,所以需要先安装对应的编译环境并下载插件。已安装编译器软件的可以参考如下连接进行配置: Visual Studio Code(VSCode)调用Dev C编译

    2024年01月16日
    浏览(45)
  • uniapp运行到微信小程序踩坑记录

    提示TypeError: Property value expected type of string but got undefined 打包时提示以下报错 因为标签绑定绑定一个函数的参数中传入一个函数时,不能直接加入括号传承,不支持方法中套方法的操作, 错误: 正确 应该把参数传入函数中以回调的形式去调用,不能直接在标签上嵌套 Error

    2024年02月16日
    浏览(71)
  • torch_geometric踩坑实战--安装与运行 亲测有效!!

    torch_geometric是PyG中必不可少的一个包,也是进行图神经网络学习的必备,然而安装这个包并运行一段简单的代码踩了不少坑,记录一下。 一开始,我直接pip 果然报错,提示没有torch_sparse 很显然是没有 安装依赖 ,于是我去查需要哪些依赖 官网地址:Installation — pytorch_geome

    2024年02月11日
    浏览(42)
  • 字节小程序踩坑-uni-app字节跳动小程序运行

    运行-运行到小程序模拟器-运行设置 运行-运行到小程序模拟器-字节跳动开发者工具  注意:抖音小程序不会像微信小程序自动打开!!!! 复制提示的地址 手动打开抖音小程序 点击导入项目,把地址复制到项目目录,点击导入即可 现在修改改HBuilderX的内容并运行,抖音小

    2024年02月14日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包