c# - 如何为 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 机器上开发,因为它只有一个命令行界面。
解决方案
查看文档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
推荐阅读
- generics - 您可以从抽象类继承方法并将其泛型类型更改为特定类型吗?
- javascript - 如何从 JavaScript 函数中逐行读取单个参数(输入)?
- json - 如何使用 jq 命令添加多个 json 对象?
- android - 更改数组列表中的项目索引
- vue.js - 覆盖全局 Vue 组件安全吗?
- python-3.x - 是什么导致 AttributeError: 'list' object has no attribute 'read' 在使用 Tabula 读取 pdf 时?
- javascript - 更改 Angular 指令添加的 CSS?
- javascript - React:使用 document.QuerySelector 作为库的一部分
- php - Symfony/进程权限被拒绝
- erlang - Elixir - 混合运行示例和参数