-2

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

  • 本机可执行启动器
  • .NET 运行时
  • .NET 库
  • {your_app} + 依赖项

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

4

1 回答 1

1

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

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

当然,您可以多次编译单个应用程序,每次都创建一个特定于操作系统/架构组合的单文件应用程序。然后您的用户可以选择与其操作系统/架构相对应的单个文件可执行文件。为此,您只需要调整dotnet publish命令即可;你不需要重新设计/重新设计你的应用程序(假设它没有以某种方式与操作系统/架构绑定)。

于 2021-09-22T01:37:59.697 回答