首页 > 解决方案 > 如何为 Linux 编译和运行 .NET Core Services?

问题描述

我正在尝试使用 .NET Core 3.1 开发 C# Worker 服务并将其作为服务在 Ubuntu 机器上运行。

我找到了在 Linux 上设置 Worker Services 的指南,但是在尝试启动该服务时出现错误(参见屏幕截图)。

该指南没有指定如何为 Linux 编译解决方案,所以我找到了这篇文章并使用dotnet build --runtime ubuntu.18.04-x64. 结果是一个包含我的应用程序且没有文件扩展名的文件夹,以及一长串 .dll 文件。

这是在 Windows 机器上发布 Worker 服务或通常针对 Linux 的 .NET Core 应用程序的正确方法吗?我无法找到有关如何正确执行此操作的任何官方文档或其他资源。

不幸的是,我不能直接在 Ubuntu 机器上开发,因为它只有一个命令行界面。

在此处输入图像描述

标签: c#linuxubuntu.net-coresystemd

解决方案


查看文档dotnet run ubuntu.18.04-x64看起来像是不正确的运行时: https ://docs.microsoft.com/en-us/dotnet/core/rid-catalog

仅列出常用值。有关最新且完整的版本,请参阅 dotnet/runtime 存储库中的 runtime.json 文件。运行下面未列出的发行版的设备可以使用其中一种便携式 RID。例如,运行未列出的 Linux 发行版的 Raspberry Pi 设备可以使用 linux-arm。

  • 便携(.NET Core 2.0 或更高版本)

    • linux-x64(大多数桌面发行版,如 CentOS、Debian、Fedora、Ubuntu 和衍生产品)

    • linux-musl-x64(使用 musl 的轻量级发行版,如 Alpine Linux)

    • linux-arm(在 ARM 上运行的 Linux 发行版,如 Raspberry Pi)
  • 红帽企业 Linux
    • rhel-x64(对于高于版本 6 的 RHEL 已被 linux-x64 取代)
    • rhel.6-x64(.NET Core 2.0 或更高版本)
  • Tizen(.NET Core 2.0 或更高版本)
    • 蒂岑
    • tizen.4.0.0
    • tizen.5.0.0

所以不要dotnet build --runtime ubuntu.18.04-x64尝试dotnet build --runtime linux-x64


推荐阅读