.NET Core 3.0 发布 ARM64

Posted

技术标签:

【中文标题】.NET Core 3.0 发布 ARM64【英文标题】:.NET Core 3.0 Publish for ARM64 【发布时间】:2019-10-20 16:08:16 【问题描述】:

有人知道如何为 ARM64 发布 .NET Core 3.0 应用程序吗? 我只能选择“linux-arm”,但不能选择“linux-arm64”。 结合 x64 设置 linux-arm 也不起作用。它说设置不兼容。

正如这里所说,它应该已经被支持:https://github.com/dotnet/core/blob/master/release-notes/3.0/3.0-supported-os.md

【问题讨论】:

你的 csproj 中有哪些平台和标识符? doesn't work 是什么意思?你尝试了什么?您在命令行或项目文件中使用了哪些运行时 ID? 链接指向支持的操作系统,而不是运行时标识符列表。该列表是here。 【参考方案1】:

链接的文章指向支持的操作系统,而不是运行时标识符列表。可以在.NET Core RID Catalog 中找到 RID 的说明和常用的列表。 完整列表可在 CoreFX 存储库中找到,地址为 runtime.json。 linux-arm64 包含在内,但这只是 base 操作系统。有很多特定的标识符,如"debian-arm64""debian.10-arm64""rhel-arm64""ubuntu-arm64"。您必须使用与您的发行版相对应的 RID。

正如 RID 目录所解释的,运行时标识符由操作系统、操作系统版本、体系结构和可选的额外限定符组成。

[os].[version]-[architecture]-[additional qualifiers]

ubuntu-arm64 是 ARM64 的通用 Ubuntu 版本,而ubuntu.19.04-arm64 专门针对 Ubuntu 19.04。

Raspbian 没有特定的版本。如果您想总体上以 Raspberry 为目标,则必须使用 linux-arm。如果您想利用 4GB RAM 模型,假设您已经使用 64 位操作系统,您可能可以定位 linux-arm64

【讨论】:

【参考方案2】:

发布配置文件设置中无法使用 linux-arm64,但如果您使用 linux-arm 构建它并在之后手动编辑您的 .pubxml 文件,它可以在 pi 上正常工作。正如您提供的链接所示,它是受支持的。似乎还没有添加到工具中。

照常发布,然后编辑.pubxml

改变 <RuntimeIdentifier>linux-arm</RuntimeIdentifier><RuntimeIdentifier>linux-arm64</RuntimeIdentifier>

然后您可以在 64 位树莓派上发布。

【讨论】:

以上是关于.NET Core 3.0 发布 ARM64的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu ARM64下的.NET Core 踩坑记录

.net core 3.0和.net5有什么区别

.NET Core 服务在 ARM64 服务器中的部署

Publish.net core 3.0 as FDE for win on linux

.NET Core 服务在 ARM64 服务器中的部署

无法使用 ODBC 连接从 .Net Core 3.0 访问