幾年前寫了一個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