我正在尝试使用HostBuilder模式来运行控制台应用程序(而不是Windows服务)。意图是保持流程与WebApi尽可能相似,以保持开发实践的一致性。我已经看到了使用HostedService或BackGroundService的示例,其中它们想要将其作为Windows服务运行。但是,如果我想要运行一个简单的控制台应用程序,我该在哪里指定我的入口类和方法?从hostbuilder.Build()中,我可以看到Run()和RunAsync()方法。但我无法弄清它将执行什么?
我已经看到了其他例子,你可以创建servicecollection,然后使用serviceprovider.GetService().SomeMethod()来启动进程。但这有点偏离我们想要做的事情。所以请建议如何指定启动过程。我们正在使用3.1 .Net Core。
class Program
{
static async void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
await host.RunAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostBuilderContext, serviceCollection) => new Startup(hostBuilderContext.Configuration).ConfigureServices(serviceCollection))
.UseSerilog()
;
}
dotnet new worker
命令创建一个后台应用程序。它采用主机构建器模式,并可以直接运行。 - abduscoMain
方法中调用它们,无需指定入口点。或者直接使用托管服务,它不需要成为 Windows/Systemd 服务即可运行。 - abdusco