集成topShelf
This commit is contained in:
parent
2822745937
commit
fb9e180e14
@ -6,12 +6,18 @@
|
|||||||
<TargetFrameworks>net5.0;net6.0</TargetFrameworks>
|
<TargetFrameworks>net5.0;net6.0</TargetFrameworks>
|
||||||
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
||||||
<Version>1.0.0-beta2</Version>
|
<Version>1.0.0-beta2</Version>
|
||||||
|
<Description>github定制版的dns服务,解析github最优的ip</Description>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0'">
|
<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0'">
|
||||||
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Topshelf" Version="4.3.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\FastGithub.Dns\FastGithub.Dns.csproj" />
|
<ProjectReference Include="..\FastGithub.Dns\FastGithub.Dns.csproj" />
|
||||||
</ItemGroup>
|
</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>
|
/// <param name="args"></param>
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
CreateHostBuilder(args).Build().Run();
|
CreateHostBuilder(args).RunAsTopShelf();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user