伺服器開機時事件檢視器記錄 .NET Runtime 2.0 Error Reporting 錯誤:
Faulting application marc.mais.exe, version 2.0.0.11 faulting module mscorwks.dll, version 2.0.50727.42 fault address 0x0025d237
應用程式 marc.mais.exe (某業務軟體) 啟動即崩潰,核心模組 mscorwks.dll (CLR 2.0 執行引擎) 損壞或版本不匹配。
mscorwks.dll 是 .NET Framework 2.0/3.0/3.5 共用的 CLR 核心 DLL (位於 %windir%\Microsoft.NET\Framework\v2.0.50727\)。2.0.50727.42 為 .NET 2.0 RTM 早期版本,極易觸發已知 GC/執行緒池/序列化 Bug (建議至少 .50727.3053 即 .NET 3.5 SP1 級別)。原則:從相同作業系統版本、相同修補層級的健康機器複製 mscorwks.dll 覆蓋損壞檔案,或直接安裝 .NET 3.5 SP1 / .NET 4.8 (含 2.0 CLR 修補) 達成原地升級。若環境受限無法重裝,檔案替換是最快止血手段。
copy %windir%\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll %windir%\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll.bak
(64 位元 OS 另備份 Framework64 目錄下同名檔案)。dotnetfx35.exe) 使用 7-Zip 解壓,於 .\WCU\DOTNET\DOTNET20\ 尋找。mscorwks.dll 熱修補包 (KB 文章)。takeown /f %windir%\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
icacls %windir%\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll /grant administrators:F
copy /y "源路徑\mscorwks.dll" %windir%\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
檔案替換屬於緊急止血,**強烈建議排程安裝 .NET Framework 3.5 SP1 (含 CLR 2.0 SP2) 或 .NET 4.8**,徹底修復已知漏洞 (GC 競爭條件、執行緒池死鎖、Remoting 洩漏、序列化效能) 並獲得長期支援。.NET 4.8 透過 in-process side-by-side 技術可並存執行 CLR 2.0 與 CLR 4.0 應用,無相容性風險。
marc.mais.exe.config 是否強制綁定舊版 CLR (<supportedRuntime version="v2.0.50727" />),嘗試移除讓其自動向上相容 CLR 4.0。fuslogvw) 觀察組件載入失敗細節。chkdsk /r)、記憶體測試 (mdsched)。mscorwks.dll 損壞是 .NET 2.0 時代經典故障。檔案替換法可在 10 分鐘內恢復業務,但**根治之道在於升級至 .NET 3.5 SP1 以上版本**,享受十餘年累積的穩定性修復。現代部署應優先採用 .NET Core / .NET 5+ 自我包含模式,徹底脫離系統級 CLR 共用元件的依賴地獄。