2023年12月7日 星期四

.Net Framewok 4.8 遇到System.IO.FileLoadException 無法載入檔案或組件 System.Resources.Extensions 0x80131040

為了sonarque可以跑在.net framework 4.8 WinForm的程式用了nuget 加了 System.Resources.Extensions 這個元件 然後終於可以跑了但是
建置時都正常

但是在runtime的時候出現以下錯誤的exception 
System.IO.FileLoadException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089無法載入檔案或組件 'System.Resources.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)





上網google 都找不到什麼東西


後來發現解法就是需要再project 的加上<GenerateResourceUsePreserializedResources>True</GenerateResourceUsePreserializedResources 然後在app.config 加上 以下程式碼 看你裝的是8.0.0.0就newVersion就是8.0.0.0

然後就可以跑了 記錄一下

<runtime>

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

<dependentAssembly>

<assemblyIdentity name="System.Resources.Extensions" culture="neutral" publicKeyToken="cc7b13ffcd2ddd51" />

<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="8.0.0.0" />

</dependentAssembly>

</assemblyBinding>

</runtime>