.NET 跨平台框架Avalonia UI: 填坑指北(二):在Linux上跑起来了

一、路径问题
1.在平常的WPF(及windows应用软件)开发中,访问文件(懒一点的话)(比如我)通常就直接使用 字符串拼接

举个例子,我们访问软件vb.net教程目录下的\Data\xxx.txt文件:

string path = AppDomain.CurrentDomain.BaseDirectory+"\Data\xxx.txt";
在windows上可以完美运行…

如果你将这一习惯带c#教程到了linux上,找不到文件还好,就怕…

在这里插入图片描述

(瞬间爆炸…)

这是因为:

在Windows中,文件路径是以单反斜杠表示的: \ 例如:C:\xxx.txt

在Linux中,文件路径是以反斜杠表示的:/ 例如:/home/xxx.txt

当你在linux中用\表示的时候,linux会认为那就是文件名…而且这个文件放在windows找不到也删不了…(别问我怎么知道的)

所以推荐使用以下方法对接路径字符串:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“Data”,“xxx.txt”);

2.如何正确地python基础教程在Linux上获取一个特殊文件夹(我的文档之类的)

大家都知道 Environment.GetFolderPath 这个方法 但是它在Linux上不是很正常:

MSDN上说:

但是我在deepin linux 上测试的结果并不是这样…

MyDocuments输出了: /root

Personal输出了:/home/twlm(我的用户名)

所以你想要正确地获取“我的文档”文件夹,可以用:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),“Documents”, “XXXX”);
以及判断平台,在不同的平台上返回正确的路径:

public static string MyDocumentsPath { get {
 if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
     return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),"Music", "LemonAppCoreDownload");
 else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
     return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic), "LemonAppCoreDownload");
 else return "";//我没有Mac OSX的机器就不搞了,可以参考文档弄一下
} }

二、网络访问
我在deepin上测试的时候蹦出来一个非常奇怪的异常:

在这里插入图片描述

像是一个无法加载程序集的异常,是调用WebClient时产生的问题,但换成HttpWebRequest就没了…

我当时发布时打开了 独立->程序集裁剪 也有可能是这里的问题…(有大神知道求告知!)

同样的问题出现在了Bass音频解码器上(简介)

当你使用 Bass.BASS_StreamCreateURL 方法访问url上的音乐文件时,无论网络通畅或链接可访问与否 都会报 TIMEDOUT 超时错误…(暂时没有找到解救方法 我使用了先下载缓存后解码的方法)

三、字体渲染问题
这个我在deepin上没有多大问题(中英文能正常显示 韩语和日语不行)

可以参考以下文档: https://www.cnblogs.com/drzhong/p/11678701.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值