gpt4 book ai didi

.net-core - Windows 和 Linux 上的 Net Core Worker 服务

转载 作者:行者123 更新时间:2023-12-03 23:45:52 25 4
gpt4 key购买 nike

上下文是 .Net Core Worker Service。我想在部署在 Windows 操作系统上时将它作为 Windows 服务运行,在部署在 Linux 操作系统上时作为守护程序运行。但我只想保留一个二进制文件用于在 Windows 和 Linux 上进行部署。
article (和许多其他)管道 UseWindowsService 或 UseSystemd,这意味着为了让这个工作服务在 Winodws 和 Linux 上运行,必须有两个不同的二进制文件。
由于我是 DotNet Core 的新手,我想了解/知道它是否可以根据操作系统有条件地管道 UseWindowsService/UseSystemd - 只保留一个二进制文件。

最佳答案

正如@Lex Li 所评论的,.Net Core 不支持跨平台的单个二进制文件| ,实际上我从未遇到过任何能够做到这一点的本地二进制文件(因此 HTML、JS、JAVA“.jar、.ear、.war”不算在内)
下面的代码片段是创建守护进程和 Windows 服务的最少代码:

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
})
.UseWindowsService()
.UseSystemd();
UseSystemd方法将 noop当不作为守护进程运行时,您仍然可以正常运行和调试您的应用程序,或者在有和没有 systemd 的情况下在生产中使用它。 .UseWindowsService().UseSystemd()NOOP所以他们只能在各自的环境中工作,所以在 Windows 上 .UseSystemd()是无操作(只是什么都不做)和在 Linux .UseWindowsService()是无操作(什么都不做)。
备注:
Build automation是流行软件用来构建跨平台二进制文件的常用方法。

关于.net-core - Windows 和 Linux 上的 Net Core Worker 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62861891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com