使用TopShelf,我遇到了"Topshelf.HostConfigurators.WindowsServiceDescription服务尚未安装"的错误.

Adr*_*ron 1 windows service topshelf

在构建Windows服务时,有没有人有使用TopShelf的经验?

尝试启动服务时,我一直遇到此错误,

"尚未安装Topshelf.HostConfigurators.WindowsServiceDescription服务."

完成构建,安装程序,安装和所有这些步骤,并且该服务显示在Windows Server的服务列表中,但是当我单击该服务并尝试启动它时,将抛出此异常.完整的错误消息如下所示.

INFO 10:23:08作为winservice应用程序启动FATAL 10:23:08 Topshelf.HostConfigurators.WindowsServiceDescription服务尚未安装.请运行'RIS.ModelGenerator.Scheduler,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null install'.错误10:23:08服务异常退出并出现异常Topshelf.Exceptions.ConfigurationException:Topshelf.HostConfigurators.WindowsServiceDescription服务尚未安装.请运行'RIS.ModelGenerator.Scheduler,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null install'.在d:\ BuildAgent-01\work\799c08e77fef999d\src\Topshelf\OS\Windows\WindowsServiceHost.cs中的Topshelf.Windows.WindowsServiceHost.Run()中:在Topshelf.HostFactory.Run(Action`1 configure)中的第56行:\ BuildAgent-01\work\799c08e77fef999d\src\Topshelf\Config\HostFactory.cs:第45行

Jef*_*her 6

问题很可能是您的服务名称中有空格.无论出于何种原因,Topshelf 2.2.2.0都能正确搜索名称中有空格的服务,即使该服务可能安装了空格,即"我的服务".当TopShelf搜索服务以检查它是否已安装时,它只会查找"我的".

这是您可以用来查看盒子上安装的服务的代码段:

using System;
using System.Linq;

public class Foo
{
    public static void Main()
    {
        foreach(var x in System.ServiceProcess.ServiceController.GetServices().OrderBy(x => x.ServiceName))
        {
            Console.WriteLine("Service Name: '{0}';, Display Name: '{1}'", x.ServiceName, x.DisplayName);
        }

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)