4

我正在嘗試放置一個Windows服務,它承載了一個WCF服務。 我的項目結構如下:服務無法啓動:無法加載程序集

  • 服務
  • Service.Contracts
  • Service.Host
  • Service.Setup

的Service.Host項目包含ProjectInstaller,服務.Setup投影WindowsInstaller。

現在,一切都建立並安裝就好了,但是當我嘗試啓動服務時,它會立即停止在我的事件日誌中看到以下消息運行:

Service cannot be started. System.TypeLoadException: Could not load type 'Service' from 
assembly 'Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 
at Host.Service.OnStart(String[] args) 
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state) 

當我檢查的輸出文件夾我的安裝項目我可以看到Service.dll以及Service.Contracts.dll ...這讓我無法防範。如何在一切正常時進行調試?該怎麼辦?

+0

什麼是您的服務程序集依賴於,參考明智?您的服務進程是否具有足夠的權限來加載這些引用?你提到你已經檢查過安裝項目的輸出文件夾,但是實際安裝的是程序集嗎? – Maarten 2012-08-01 06:42:19

+0

你知道如何使用「附加到進程」嗎? – 2012-08-01 06:49:06

+0

@Maarten:服務程序集依賴於某些.NET程序集和Service.Contracts。我如何檢查Maarten?我只知道我在服務列表中看到了該服務,但無法啓動它,因此我猜它已正確安裝。 – fuaaark 2012-08-01 06:52:15

回答

2

修復:名稱空間聲明的愚蠢錯誤。

1

對於這樣的情況(失敗在開始時發生),可能很難連接調試器。如果我仍在開發中,我喜歡在System.Diagnostics.Debugger.Launch()的額外聲明中加入。代碼運行時,這將自動運行launch a debugger。我建議在OnStart的下方放置該行代碼,以查看是否可以從該問題中獲得更多信息。

+0

這對我來說沒有什麼區別...調試器沒有啓動。 – 2013-02-05 17:19:12