2025年5月15日 星期四

[研究]ASP.NET,無法載入檔案或組件 'System.ValueTuple

[研究]ASP.NET,無法載入檔案或組件 'System.ValueTuple

2025-05-15

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

目前使用 .NET Framework 4.8.0

********************************************************************************

Compile/Build、Deploy 正常,Runtime 執行某功能出現錯誤

無法載入檔案或組件 'System.ValueTuple, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 或其相依性的其中之一。 系統找不到指定的檔案。"

********************************************************************************

把 System.ValueTuple.4.6.1 -> System.ValueTuple.4.5.0 退版,出現

HtmlSanitizer.9.0.884 -> HtmlSanitizer.9.0.876

System.ValueTuple.4.6.1 -> System.ValueTuple.4.5.0

它會自動退版2個。

Compile/Build、Deploy 正常,Runtime 執行某功能正常。

********************************************************************************

2025-05-16 補測試,安裝 HtmlSanitizer.9.0.884 和 System.ValueTuple 4.6.1 版

Web.Config 中設定為

<dependentAssembly>
  <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>

測試依舊失敗

********************************************************************************

2025-05-16 補測試

Web.Config 中設定為

<dependentAssembly>
  <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.6.1.0" newVersion="4.6.1.0" />
</dependentAssembly>

測試依舊失敗

********************************************************************************

2025-05-16 補測試

Web.Config 中拿掉類似下面的

<dependentAssembly>
  <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.6.1.0" newVersion="4.6.1.0" />
</dependentAssembly>

編譯有警告

1>  請考慮將組件 "System.ValueTuple, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" 的 app.config 從版本 "4.0.3.0" [C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\System.ValueTuple.dll] 重新對應至版本 "4.0.5.0" [],以解決衝突並避免出現警告。

1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5): warning MSB3247: 在同一個相依組件的不同版本之間發現衝突。請在 Visual Studio 中按兩下這個警告 (或選取後按 Enter) 解決這些衝突,或者將下列繫結重新導向加到應用程式組態檔中的 [執行階段] 節點: <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="System.ValueTuple" culture="neutral" publicKeyToken="cc7b13ffcd2ddd51" /><bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" /></dependentAssembly></assemblyBinding>

********************************************************************************

(完)

沒有留言:

張貼留言