You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派OS Lite下依赖框架运行Avalonia程序报.NET location: Not found错误

解决树莓派OS Lite中依赖框架模式运行Avalonia程序的.NET找不到问题

问题分析

从报错信息和dotnet --info输出来看,核心问题有两点:

  • 程序的应用宿主(App host)版本为7.0.7,但本地安装的.NET Runtime版本是7.0.8,版本不匹配导致宿主无法找到对应Runtime
  • 使用sudo运行程序时,默认不会继承普通用户的DOTNET_ROOT环境变量,导致系统无法定位.NET安装路径

解决方案

1. 保留环境变量运行程序

直接用sudo -E命令保留当前用户的环境变量(包括DOTNET_ROOT)执行程序:

sudo -E ./AvaloniaApplication1 --drm

如果需要永久让sudo继承DOTNET_ROOT,可以编辑sudoers文件:

sudo visudo

在文件中添加一行:

Defaults env_keep += "DOTNET_ROOT"

保存退出后,后续sudo命令会自动继承该环境变量。

2. 直接用dotnet命令启动程序

绕过应用宿主,直接调用已安装的dotnet runtime启动程序的dll文件:

sudo dotnet ./AvaloniaApplication1.dll --drm

这种方式会强制使用本地已安装的7.0.8版本Runtime,避免版本匹配问题。

3. 统一.NET版本(可选)

如果希望让程序的应用宿主版本和本地Runtime版本一致,可以:

  • 重新发布程序时,指定使用7.0.8版本的SDK进行编译发布
  • 或者手动下载安装7.0.7版本的.NET Runtime,放在/home/admin/.dotnet/shared/Microsoft.NETCore.App目录下,确保版本匹配

4. 验证Runtime配置

检查程序目录下的AvaloniaApplication1.runtimeconfig.json文件,确认其中指定的runtimeVersion是否和已安装的Runtime版本兼容:
比如文件中应该类似:

{
  "runtimeOptions": {
    "tfm": "net7.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "7.0.0"
    }
  }
}

这里的version如果指定了具体的7.0.7,会导致只寻找该版本;如果写7.0.0或7.0.x,会兼容更高的小版本(比如7.0.8)。


内容的提问来源于stack exchange,提问作者Melon NG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:32:18