把 C# WinForm repo 從 remote 拉下來合併時,發生某新增的 namespace 存在,但是 VS 說找不到情況,刪除 VS bin 後 rebuild 恢復正常,但執行時卻由 Autofac 產生 Exception,錯誤訊息如下
Could not load file or assembly 'System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. 系統找不到指定的檔案
該 Project 內 ValueTuple 已經是 4.6,但錯誤訊息卻是 4.0.3,發現在 App.Config 內有該段 bindingRedirect
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</runtime>
<startup>
</configuration>
- System.ValueTuple now supports .NET Framework 4.7
- Could not load file or assembly 'System.ValueTuple'
最後判斷是把 App.Config 內的 bindingRedirect 刪除不會影響,順勢把 nuget 下載的 ValueTuple 移除。
進一步追查在 202503 整理 nuget 套件時,有把 ValueTuple 從 4.5 升級為 4.6,不知道是不是該動作造成,要不然 bindingRedirect 從 202005 就存在,不可能這五年時間都相安無事。
沒有留言:
張貼留言