【超详细教程】使用Windows Live Writer 和Office Word  发布文章到全面总结
谋荣淘湍1. 前言目前国产化系统浪潮下适配鸿蒙是中国软件大势所趋.NET作为最适合开发客户端语言之一适配鸿蒙系统(HarmonyOS Next)是目前.NET开发者最关心的事情。我目前业余时间正在移植Avalonia到HarmonyOS去年在.NET Conf CN上分享过目前又取得一点进展所以本文把所有问题进行整合与大家进行分享。2. 项目状态目前.NET可以成功在HarmonyOS Next上运行。Avalonia移植项目在真机上也可以运行本文主要探讨.NET适配相关工作。3. 运行时自HarmonyOS 5.0.0(12)起禁止匿名内存申请可执行权限除系统内置的JavaScript引擎外其他虚拟机不能使用Jit功能所以无法将CoreCLR接入到鸿蒙系统中而最新版的Mono虽然支持解释执行但是由于性能问题也不会接入Mono到鸿蒙系统最终只能选择接入NativeAOT运行时。4. NativeAOT支撑鸿蒙可以接入NativeAOT的原理是鸿蒙系统兼容libc是musl的Linux系统的动态库(.so)。而.NET的RID支持linux-musl-arm64/linux-musl-x64所以理论上可以将.NET程序编译为原生的Linux动态库(.so)然后在鸿蒙的原生项目中通过dlopen以及dlsym等函数调用C#中的入口函数。而C#调用鸿蒙api则通过P/Invoke调用鸿蒙的NDK而ArkUI的TypeScript api则通过NDK中的napi调用。具体做法可以参考我正在做的Avalonia移植项目: https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia5. 已知问题5.1 syscall限制 (已解决)鸿蒙系统使用了seccomp限制危险的syscall调用。标准posix下如果系统不支持某个syscall则返回错误码而seccomp非常激进如果调用了非法的sycall则直接杀掉进程。.NET的运行时初始化时会调用__NR_get_mempolicy系统调用对numa支持进行检查而这个系统调用不在鸿蒙的seccomp白名单中所以导致直接宕机。鸿蒙系统中seccomp的系统调用白名单如下https://gitee.com/openharmony/startup_init/blob/master/services/modules/seccomp/seccomp_policy/app.seccomp.policy其实安卓中也有类似的限制.NET的NativeAOT之所以能在安卓平台下运行是因为.NET中对安卓进行了特殊处理而在鸿蒙平台我们使用的是Linux平台的代码所以没有对这些系统调用进行处理。解决办法则是自行修改代码将numa的函数全部修改为空函数5.2 mmap申请虚拟内存过大已解决解决上个问题后.NET运行时初始化依然不能成功导致程序崩溃经过排查发现是GC初始化时会申请256G左右的虚拟内存导致mmap返回Out Of Memory错误。解决办法1设置环境变量“DOTNET_GCHeapHardLimit”将虚拟内存申请控制在约180G以下即可。解决办法2修改源代码将USE_REGIONS宏关掉。5.3 ICUOpenSSL等第三方库缺失已解决解决方案1从Alpine上偷包 因为Alpine的libc是musl所以理论上Alpine的库在鸿蒙上大部分都能使用。阿里云Alpine软件包镜像地址:arm64架构https://mirrors.aliyun.com/alpine/edge/main/aarch64/amd64架构https://mirrors.aliyun.com/alpine/edge/main/x86_64/解决方案2如果该库有cmake项目则可以通过鸿蒙的CMake工具链编译。5.4 ICU初始化失败已解决鸿蒙的ICU配置文件路径与默认路径不同需要调用修改环境变量API将ICU_DATA修改为/system/usr/ohos_icu且鸿蒙平台上libICU的大版本是72要使用这个版本的库。5.5 NativeAOT如何跨平台编译 (Windows平台已解决)NativeAOT众所周知不支持跨平台编译而我的方案需要发布到linux-musl平台所以无法在Windows上发布影响开发效率。解决方案在项目中引入项目https://github.com/OpenHarmony-NET/PublishAotCross5.6 无法调用Marshal.GetDelegateForFunctionPointer相关函数Marshal.GetDelegateForFunctionPointer的实现依赖动态生成汇编而HarmonyOS不支持动态生成汇编代码执行(Jit)使用该函数会导致崩溃。解决方案: 使用函数指针直接调用。6. 如何修改NativeAOT代码前文中提到部分问题的解决方案是修改源码具体操作步骤如下修改完代码执行以下命令进行编译(linux平台下需要有编译环境)./build.sh --subset clr.aot --configuration Release -arch arm64 --cross编译成功后打开目录 运行时/artifacts/bin/coreclr/linux.arm64.Release/aotsdk将这里所有的替换到自己电脑nuget的缓存目录, 例如C:\Users\用户名\.nuget\packages\runtime.linux-musl-arm64.microsoft.dotnet.ilcompiler\dotnet版本\sdk

相关新闻

经验分享:CSS浮动(float,clear)通俗讲解

经验分享:CSS浮动(float,clear)通俗讲解

露梦膊墩1.理论习题 【中英】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验 这是本周理论部分的习题和相应解析,博主已经做好了翻译和解析工作,因此便不再重复,但有一题涉及到代码中矩阵的两种乘法,我们把这道题…

2026/7/7 5:23:26 阅读更多 →
写给开发者看的关系型数据库设计

写给开发者看的关系型数据库设计

邓祭废是问题 下午两点新版本上线,其中一个消费者服务的内存增长速度异常迅速,在短短五分钟内就用完了2G内存并自动重启了pod,之后又在五分钟内OOM了,在四十分钟内服务的pod已经重启了八十几次,要知道我们之前这个消费…

2026/5/17 9:26:05 阅读更多 →
DIY 一套正版、免费、强大的 Visual Studio  IDE

DIY 一套正版、免费、强大的 Visual Studio IDE

澳瞻凳焕《新兴数据湖仓设计与实践手册从分层架构到数据湖仓架构设计(2025 年)》 系列文章将聚焦从数据仓库分层到数据湖仓架构的设计与实践。手册将阐述数据仓库分层的核心价值、常见分层类型,详解分层下的 ETL 架构及数据转换环节&#xff…

2026/5/17 9:26:04 阅读更多 →

最新新闻

《深入理解计算机系统》计算机系统漫游

《深入理解计算机系统》计算机系统漫游

《深入理解计算机系统》(简称 CSAPP)书中 “计算机系统漫游” 部分的核心内容。这部分通常作为全书的引言或第一章,旨在宏观地描绘计算机系统的构成和运作方式。 信息的表示与处理(核心基础) 计算机系统处理的所有信息…

2026/7/7 5:23:32 阅读更多 →
远程协助软件推荐 远程协助软件哪个好

远程协助软件推荐 远程协助软件哪个好

日常帮亲友排查设备故障、异地处理工作难题,都需要靠谱的远程协助,便捷高效的远程协助能大幅降低跨设备、跨地域的操作成本。哪款远程协助软件体验比较呢?无界趣连2.0凭借轻量化设计与扎实的使用体验,成为个人日常远程协助的优选工…

2026/7/7 4:55:49 阅读更多 →
AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

一、准备工作- 确保 板框(Board Shape) 已画好(机械层 Mechanical 1)。​- 布局、走线基本完成,DRC 先过一遍。​- 切换到要敷铜的层:底部层标签点 Top Layer(顶层) 或 Bottom Layer…

2026/7/7 4:55:49 阅读更多 →
NET 10:Oxigraph 的 FFI 桥接实践

NET 10:Oxigraph 的 FFI 桥接实践

架构概览┌──────────────────────────────────────────────────────────┐ │ .NET 应用层 │ │ ┌──────────┐ ┌────────────────…

2026/7/7 4:55:49 阅读更多 →
从静态限流到智能负载管理:Uber 如何治理大规模数据库过载

从静态限流到智能负载管理:Uber 如何治理大规模数据库过载

本文是对 How Uber Conquered Database Overload: The Journey from Static Rate-Limiting to Intelligent Load Management 的整理与翻译。 内容结构概览 本文会围绕 Uber 如何从静态限流走向智能负载管理展开,主要包括: 为什么 Uber 的数据库过载治理…

2026/7/7 4:47:48 阅读更多 →
Uber 如何用原生 gRPC 加速 OpenSearch:从 REST/JSON 瓶颈到搜索与写入性能优化

Uber 如何用原生 gRPC 加速 OpenSearch:从 REST/JSON 瓶颈到搜索与写入性能优化

本文是对 Accelerating Search and Inestion with High-Performance gRPC™ in OpenSearch™ 的整理与翻译。 内容结构概览 本文会围绕 Uber 如何在 OpenSearch 中引入原生 gRPC 传输层展开,主要包括: 为什么搜索系统在 Uber 几乎无处不在REST/JSON 在…

2026/7/7 4:47:48 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻