接獲報案,某 ASP.NET 4.0 Web Form 專案部署後發生錯誤:

FileLoadException: Could not load file or assembly
'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes'
or one of its dependencies. The given assembly name or codebase was invalid.
(Exception from HRESULT: 0x80131047)

訊息明確,很快查到 Scott Hanselman 的文章:Fixing System.Core 2.0.5 FileLoadException, Portable Libraries and Windows XP support。原因出在網站引用 .NET Portable Class Library (讓程式庫能被Windows Desktop、Windows Phone、Silverlight、Windows App、XBox 360 共用的一種技術)而 .NET 4.0 Framework 未更新到新版。問題根源確認後,事件便在通知系統管理人員安裝 KB2468871 更新後平和落幕。(謎:意思是本來打算白刀子進紅刀子出來著?)

餘下一個問題,單純網站為什麼會跟 Portable Class Library 扯上邊,拿到詳細錯誤訊息,答案揭曉:網站裡用了 Telerik RadControl 元件,引爆點在 RadScriptManager 類別,應是元件廠商考慮程式庫共用,將部分共用類別轉為可攜形式,遇上未即時更新 .NET Framework 的平台才導致問題。


Comments

Be the first to post a comment

Post a comment