2010-10-25 92 views
7

我遵循步驟here,使我現有的WCF服務(作爲控制檯應用程序已經正常工作)成爲Windows服務,在我的Windows 7計算機上也是我的開發計算機。WCF Service as Windows Service woes(Windows 7)

不管是什麼我想,做使用installutil的最後一步的時候,我得到的命令行下面的消息:
System.BadImageFormatException:初始化安裝發生

例外:無法加載文件或程序集'file:/// [path here]'或其某個依賴項。
試圖加載程序格式不正確的..

我從ServiceBase我的控制檯應用程序的主類繼承,並實現OnStartOnEnd方法。

我已經添加ProjectInstaller繼承自System.Configuration.Install.Installer的類繼承了[RunInstaller(true)]屬性,並且它們在構造函數中提供了它們的代碼。

我已經試過了,在上面的文章中沒有提到?

  1. 運行命令行管理員
  2. 導航到該EXE文件所在的目錄,然後運行 installutil從那裏
  3. 給予強有力的關鍵EXE文件和所有DLL的它的使用

另外,即使用/LogFile=myLog.txt進行指定,我也沒有得到任何日誌文件。

歡迎任何想法,謝謝。

+0

這似乎是顯而易見的,但請確保InstallUtil.exe是從.net的正確版本。有時候,路徑環境變量指向另一個.Net版本,在這種情況下,你會得到這個錯誤。 – 2010-10-25 19:27:07

+0

謝謝,我已經明確地將.NET 4文件夾的路徑添加到全局窗口路徑,我的代碼也是.NET 4,所以情況並非如此。 – 2010-10-26 09:03:48

回答

6

這聽起來像是32位/ 64位的問題。

你的機器是64位Windows 7的嗎?你的服務是否以某種方式引用32位的東西,就像舊的COM組件或其他東西?

您可能需要編譯你的東西在Visual Studio x86平臺上得到它的正常工作......當裝配在一箇舊版本的.NET框架的加載

+1

就在當場!永遠不會猜到。我的機器是64位,但在代碼中沒有任何地方引用32位,沒有COM組件..也許默認是32位從來沒有機會檢查。 – 2010-10-26 09:10:35

3

BadImageFormat異常通常出現( 4.0在沒有4.0的機器上組裝)。由於您在同一臺計算機上部署,我的猜測是您沒有使用正確版本的installutil。

確保您使用位於這裏的installutil:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319

+1

謝謝,你的文章引導我到解決方案:我使用的是C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319而不是32位版本的installutil:S – 2010-10-26 09:09:14

+1

+1我使用該版本的installutil,但我的Windows服務項目中的「build-> platform target」被設置爲x86而不是x64。一旦我改變了它,它爲我工作。 – 2011-06-20 16:00:53