集成topShelf
This commit is contained in:
parent
2822745937
commit
fb9e180e14
@ -6,12 +6,18 @@
|
||||
<TargetFrameworks>net5.0;net6.0</TargetFrameworks>
|
||||
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
||||
<Version>1.0.0-beta2</Version>
|
||||
<Description>github定制版的dns服务,解析github最优的ip</Description>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0'">
|
||||
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Topshelf" Version="4.3.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FastGithub.Dns\FastGithub.Dns.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
44
FastGithub/HostBuilderExtensions.cs
Normal file
44
FastGithub/HostBuilderExtensions.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using Topshelf;
|
||||
|
||||
namespace FastGithub
|
||||
{
|
||||
static class HostBuilderExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// topShelf管理运行
|
||||
/// </summary>
|
||||
/// <param name="hostBuilder"></param>
|
||||
/// <returns></returns>
|
||||
public static void RunAsTopShelf(this IHostBuilder hostBuilder)
|
||||
{
|
||||
if (OperatingSystem.IsWindows())
|
||||
{
|
||||
HostFactory.Run(c =>
|
||||
{
|
||||
var assembly = typeof(HostBuilderExtensions).Assembly;
|
||||
var assemblyName = assembly.GetName().Name;
|
||||
var assemblyDescription = assembly.GetCustomAttribute<AssemblyDescriptionAttribute>();
|
||||
|
||||
c.RunAsLocalSystem();
|
||||
|
||||
c.SetServiceName(assemblyName);
|
||||
c.SetDisplayName(assemblyName);
|
||||
c.SetDescription(assemblyDescription?.Description);
|
||||
|
||||
c.Service<IHost>(service => service
|
||||
.ConstructUsing(() => hostBuilder.Build())
|
||||
.WhenStarted(service => service.Start())
|
||||
.WhenStopped(service => service.StopAsync())
|
||||
);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
hostBuilder.Build().Run();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,7 @@ namespace FastGithub
|
||||
/// <param name="args"></param>
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
CreateHostBuilder(args).RunAsTopShelf();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user