[.NET]安裝Windows Service失敗(System.Reflection.ReflectionTypeLoadException)

幾年前寫了一個windows服務來處理socket接收批次工作的通知,最近同事想在一個專案中導入,安裝服務的過程中,在幾個成員的開發機都完成安裝,但在測試機(Windows Server 2008 R2)就是不依,同事報案了2天,終於有時間回公司解題了,來筆記。

 

服務安裝問題

服務程式上版完成後,我們會使用framework內建的Install utility的指令進行服務安裝:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe  
    C:\temp\TestService.exe

 

但出現了反射型別失敗的訊息

System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

反射時找不到型別,但打開VisualStudio專案內參考,全都是.NET Framework基本的library啊!

stackoverflow的文章也不得其門...,連安裝程式都換成64bit版也還是不要不要的(c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.ex)

 

 


問題排除:

1.這時從三創買來的高貴滑鼠點了要安裝的服務執行檔(.exe)左鍵兩下,噹噹! 跳出要安裝.NET Framework的訊息!  秒懂!

2.好,趕緊來安裝.NET Framework 4.5,很快的經過了5分鐘!

3.接著重新安裝寫好的Windows服務

成功安裝!收工!

 


小結:

  • 卡在一個點太久時,要先抽換一下心情。
  • 到底Server是怎麼移除.NET 4.5的,明明2年前才安裝過的。

 

 


.NET Framework 4.5.2 (離線安裝程式)

適用於 Windows Vista SP2、Windows 7 SP1、Windows 8、Windows 8.1、Windows Server 2008 SP2、Windows Server 2008 R2 SP1、Windows Server 2012

及 Windows Server 2012 R2 的 Microsoft .NET Framework 4.5.2 (離線安裝程式)

https://www.microsoft.com/zh-TW/download/confirmation.aspx?id=42642