是否可以使用 .NET 5 创建独立于平台的自包含单文件应用程序?

Is it possible to create a platform independent self-contained single file app by using .NET 5?

我刚刚阅读了一篇关于 .NET 5 中独立的单文件应用程序的文章。它是一种部署选项,允许我创建一个包含以下内容的文件:

这个单文件应用程序是否指向特定平台?我想是的,因为它应该包含特定于平台的运行时版本,并且应用程序应该使用目标机器的体系结构进行编译。我对吗?这是否意味着我应该在交付独立的单文件应用程序之前了解目标平台(Windows、Linux、MacOs)、机器架构?

单文件自包含可执行文件非常非常具体。它特定于您的操作系统(Linux、macOS 或 Windows)。它还特定于您的体系结构(arm64、x64 等)。如果您为 win-x64 (Windows + x64) 构建,它将无法在 linux-x64 (Linux + x64) 上运行,也不会在 linux-arm64 ( Linux + 手臂 64).

您应该确切地知道您的目标是什么 OS 和体系结构,以创建可以在那里运行的独立的单个文件可执行文件。

当然,您可以多次编译单个应用程序,每次都创建一个特定于 OS/Architecture 组合的单文件应用程序。然后您的用户可以选择与其 OS/Architecture 相对应的单个文件可执行文件。为此,您只需调整 dotnet publish 命令;您不需要 redesign/re-architect 您的应用程序(假设它没有以某种方式绑定到 OS/Architecture)。