2011-09-08 226 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(); 
    } 
} 
相關問題