1. worker service 項目
1.需要安裝nuget Microsoft.Extensions.Hosting.WindowsServices
IHost host = Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices(services => { Init(services); services.AddHostedService<Worker>(); }) .Build(); host.Run();
其中就添加一句話UseWindowsService
就可以了。
2.asp.net core 項目 6.0
1.安裝 nuget Microsoft.Extensions.Hosting.WindowsServices
2.設置項目目錄
ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default
var builder = WebApplication.CreateBuilder(new WebApplicationOptions { EnvironmentName = environments, Args = args, ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default });
builder.Host.UseWindowsService();
3. aspnet core 7.0 已經解決這個問題了
//net6 下 //以服務的形式運行,需要安裝Microsoft.Extensions.Hosting.WindowsServices //builder.Host.UseWindowsService(); //方法1.添加 //Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //var builder = WebApplication.CreateBuilder(new WebApplicationOptions //{ // EnvironmentName = environments, // Args = args, //}); //方法2. //var builder = WebApplication.CreateBuilder(new WebApplicationOptions //{ // EnvironmentName = environments, // Args = args, // ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default //}); //net7 下 已經修復此問題 直接運行就可以 //以服務的形式運行,需要安裝Microsoft.Extensions.Hosting.WindowsServices //builder.Host.UseWindowsService();
4. 控制檯程序部署成服務,可以用topshelf 也可以用 Microsoft.Extensions.Hosting.WindowsServices
1.控制檯程序沒有appsettings和WebApplication 需要nuget Microsoft.AspNetCore.OpenApi