要将.NET Core Web API制作成Windows服务安装包,可以按照以下步骤进行操作:
-
创建一个新的.NET Core Web API项目或使用现有的项目。
-
在项目中添加对
Microsoft.Extensions.Hosting.WindowsServices
包的引用。可以通过NuGet包管理器或在.csproj文件中手动添加引用。 -
在
Program.cs
文件中,修改CreateHostBuilder
方法,以便将Web API应用程序作为Windows服务运行。示例如下:
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Hosting.WindowsServices;
public class Program
{
public static void Main(string[] args)
{
var isService = !(Debugger.IsAttached || args.Contains("--console"));
var builder = CreateHostBuilder(args.Where(arg => arg != "--console").ToArray());
if (isService)
{
builder.UseWindowsService();
}
var host = builder.Build();
if (isService)
{
host.RunAsService();
}
else
{
host.Run();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
- 在项目的根目录中创建一个
service
文件夹,并在其中添加一个serviceinstaller.ps1
文件。该文件用于安装和卸载Windows服务。示例如下:
param (
[switch]$uninstall
)
$serviceName = "YourServiceName"
$serviceDisplayName = "Your Service Display Name"
$serviceDescription = "Your Service Description"
$serviceExePath = "$PSScriptRoot\..\YourServiceProjectName.dll"
if ($uninstall)
{
Write-Host "Uninstalling $serviceName..."
sc.exe delete $serviceName
Write-Host "Uninstall completed."
}
else
{
Write-Host "Installing $serviceName..."
sc.exe create $serviceName binPath= $serviceExePath DisplayName= $serviceDisplayName start= auto
sc.exe description $serviceName $serviceDescription
Write-Host "Install completed."
}
- 在项目的根目录中创建一个
publish.bat
文件,用于发布项目并生成安装包。示例如下:
@echo off
dotnet publish -c Release -o .\publish
powershell -ExecutionPolicy Bypass -File .\service\serviceinstaller.ps1
-
打开命令提示符或PowerShell,导航到项目的根目录,并运行
publish.bat
文件。这将发布项目并生成安装包。 -
在生成的
publish
文件夹中,找到发布的Web API应用程序和安装脚本。 -
将整个
publish
文件夹复制到目标服务器上,并运行serviceinstaller.ps1
脚本以安装Windows服务。可以使用以下命令:
powershell -ExecutionPolicy Bypass -File .\service\serviceinstaller.ps1
安装完成后,.NET Core Web API将作为Windows服务在目标服务器上运行。
请注意,以上步骤仅适用于将.NET Core Web API作为Windows服务安装。如果需要更高级的功能,例如服务启动类型、日志记录等,可能需要进一步的自定义和配置。