移花接木 —— 在其它平台上为 LoongArch 架构打包 .NET 程序
内容提要
龙芯已为LoongArch架构移植了.NET运行时,但由于linux-loongarch64 RID仅为社区支持,NuGet上缺乏相应包。可以通过不使用AppHost发布或将龙芯.NET SDK中的运行时包提取到其他平台的SDK上,实现对linux-loongarch64的应用发布。
关键要点
-
龙芯为LoongArch架构移植了.NET运行时,使其能够运行.NET程序。
-
由于linux-loongarch64 RID仅为社区支持,NuGet上缺乏相应的运行时包。
-
通过不使用AppHost发布或提取龙芯.NET SDK中的运行时包,可以实现对linux-loongarch64的应用发布。
-
AppHost是启动.NET运行时并调用托管程序入口点的原生程序,无法从NuGet获取LoongArch的运行时包。
-
使用命令-dotnet publish -r linux-loongarch64 -p:UseAppHost=false可以不使用AppHost发布应用。
-
可以将龙芯.NET SDK内的运行时包提取到其他平台的.NET SDK上。
-
旧世界的.NET 8由龙芯中科维护,可以从指定网站获取并解压。
-
需要将龙芯.NET SDK内的特定目录复制到其他平台的.NET SDK中,并处理符号链接。
-
在.NET 8中需要手动补充linux-loongarch64运行时包声明。
-
新世界的.NET 9 RC版本已加入对应的运行时包声明,无需修改配置文件即可发布。
-
通过dotnet publish命令可以成功发布适用于linux-loongarch64的应用。
延伸问答
如何在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来发布应用。