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

时间:2011-09-08 17:15:58

标签: windows service topshelf

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

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

“还没有安装Topshelf.HostConfigurators.WindowsServiceDescription服务。”

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

INFO 10:23:08作为winservice应用程序启动 致命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():第56行    在Topshelf.HostFactory.Run(Action`1 configure)中的d:\ BuildAgent-01 \ work \ 799c08e77fef999d \ src \ Topshelf \ Config \ HostFactory.cs:第45行

2 个答案:

答案 0 :(得分:5)

问题很可能是您的服务名称中有空格。无论出于何种原因,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();
    }
}

答案 1 :(得分:0)

看来,我的版本实际上并没有真正起作用(这似乎是最新版本)。我不得不回滚(通过NuGet感谢)到之前的版本,v2.0之前,以解决我的问题。我似乎正在研究的项目似乎已经融入了一些pre v2.0功能/方法,因此出现了问题。

感谢Jeff Schumacher对这个问题的额外帮助。希望TopShelf软件更新为当前版本中没有这些差异。