2011-09-08 25 views
1

有没有人在构建Windows服务时使用TopShelf的经验?使用TopShelf时,我遇到了“Topshelf.HostConfigurators.WindowsServiceDescription服务尚未安装”错误。

我一直运行到这个错误尝试启动该服务时,

“Topshelf.HostConfigurators.WindowsServiceDescription服务尚未安装呢。”

构建,安装程序,安装和所有这些步骤已完成,并且该服务显示在Windows Server的服务列表中,但是当我单击服务并尝试启动服务时,会引发此例外情况。完整的错误信息如下所示。

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

回答

0

看来,我有一个版本,只是没有真正的工作(这似乎是最新的版)。为了解决我的问题,我必须回滚(通过NuGet感谢)到以前的版本,v2.0之前。这也表明我正在研究的这个项目被2.0版本的某些特性/方法所吸引,因此出现了问题。

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

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(); 
    } 
} 
相关问题