移花接木 —— 在其它平台上为 LoongArch 架构打包 .NET 程序

💡 原文中文,约7500字,阅读约需18分钟。
📝

内容提要

龙芯已为LoongArch架构移植了.NET运行时,但由于linux-loongarch64 RID仅为社区支持,NuGet上缺乏相应包。可以通过不使用AppHost发布或将龙芯.NET SDK中的运行时包提取到其他平台的SDK上,实现对linux-loongarch64的应用发布。

🔎

延伸解读

LoongArch架构的挑战与机遇

尽管LoongArch架构的.NET运行时目前仅为社区支持,缺乏NuGet包,但这也为开发者提供了探索新平台的机会。通过手动提取和配置,开发者可以在LoongArch设备上发布应用,推动该架构的生态发展。

AppHost的作用与替代方案

AppHost是启动.NET程序的关键组件,但在LoongArch上无法获取其运行时包。开发者可以通过不使用AppHost的方式发布应用,简化了发布流程,降低了对特定架构的依赖,适合没有原生依赖的应用。

新旧版本的.NET支持差异

在.NET 8中,开发者需要手动添加linux-loongarch64的运行时包声明,而在.NET 9 RC版本中,这一声明已被纳入,简化了发布过程。开发者应关注不同版本的支持情况,以选择合适的开发环境。

Q&A

如何在LoongArch架构上发布.NET应用程序?

可以通过不使用AppHost发布或将龙芯.NET SDK中的运行时包提取到其他平台的SDK上来实现对linux-loongarch64的应用发布。

什么是AppHost,它在发布过程中有什么作用?

AppHost是启动.NET运行时并调用托管程序入口点的原生程序,现代.NET程序的可执行文件实际上是AppHost的副本。

为什么无法从NuGet获取LoongArch的运行时包?

因为linux-loongarch64 RID仅为社区支持状态,NuGet上缺乏相应的运行时包。

如何提取龙芯.NET SDK中的运行时包?

可以将龙芯.NET SDK内的特定目录复制到其他平台的.NET SDK中,并处理符号链接。

.NET 8和.NET 9在支持LoongArch方面有什么区别?

.NET 8需要手动补充linux-loongarch64运行时包声明,而.NET 9 RC版本已加入对应的运行时包声明,无需修改配置文件即可发布。

如何使用命令行发布适用于linux-loongarch64的应用?

可以使用命令dotnet publish -r linux-loongarch64 -p:UseAppHost=false来发布应用。

🏷️

标签

➡️

继续阅读