diff --git a/FastGithub/FastGithub.csproj b/FastGithub/FastGithub.csproj index 907e1a3..469bbb7 100644 --- a/FastGithub/FastGithub.csproj +++ b/FastGithub/FastGithub.csproj @@ -6,12 +6,18 @@ net5.0;net6.0 true 1.0.0-beta2 + github定制版的dns服务,解析github最优的ip + MIT true + + + + diff --git a/FastGithub/HostBuilderExtensions.cs b/FastGithub/HostBuilderExtensions.cs new file mode 100644 index 0000000..87d016a --- /dev/null +++ b/FastGithub/HostBuilderExtensions.cs @@ -0,0 +1,44 @@ +using Microsoft.Extensions.Hosting; +using System; +using System.Reflection; +using Topshelf; + +namespace FastGithub +{ + static class HostBuilderExtensions + { + /// + /// topShelf管理运行 + /// + /// + /// + 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(); + + c.RunAsLocalSystem(); + + c.SetServiceName(assemblyName); + c.SetDisplayName(assemblyName); + c.SetDescription(assemblyDescription?.Description); + + c.Service(service => service + .ConstructUsing(() => hostBuilder.Build()) + .WhenStarted(service => service.Start()) + .WhenStopped(service => service.StopAsync()) + ); + }); + } + else + { + hostBuilder.Build().Run(); + } + } + } +} diff --git a/FastGithub/Program.cs b/FastGithub/Program.cs index 916f2bd..a4fe162 100644 --- a/FastGithub/Program.cs +++ b/FastGithub/Program.cs @@ -10,7 +10,7 @@ namespace FastGithub /// public static void Main(string[] args) { - CreateHostBuilder(args).Build().Run(); + CreateHostBuilder(args).RunAsTopShelf(); } ///