VS2019 升級 VS2022 後遇到第一個升級後無法編譯的專案,幸好問題不大,還學會快速檢查 NuGet .nupkg 的技巧。

有個古老專案,歷經 VS2015、VS2017、VS2019 多個世代,修改或編譯都沒啥問題,第一次改用 VS2022 卻噴出錯誤。

.scss 檔案編譯時發生 Could not load file or assembly 'LibSass.x86, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 錯誤。

由檔名包含 x86,推測是 VS2022 改跑 64 位元導致,在此之前,Visual Studio 一直是 32 位元版。

查了一下,Libsass.x86 來自 BuildWebCompiler 套件,專案使用的版本是 1.0.73 超級古老,如今最新版本已到 1.12.405,新版已改變做法,不再使用 32 位元原生程式庫:

不過新版需要 .NET 4.6+,專案 .NET 版本還在 4.5.2:

猶豫了一下,決定不動專案版本,找到 1.10.311 是 .NET 4.5.x 可用的最高版本。進一步檢查,其實從 1.2.128+ (2015/8/15) 就不再使用 libsass.x86.dll 了,1.2.127 是最後一個用它的版本:

升級後,專案便能用 VS2022 順利編譯了。

這次查問題過程,發現 NuGet 網站的 Open in NuGet Package Explorer 功能很好用,可線上檢視 .nupkg 內容。

而這個線上版 NuGet Package 檢視器是用 WebAssembly 實作的:

程式則是用 Uno Platform 開發,寫 XAML 轉成 UWP/iOS App/Android App/WebAssembly 跨平台執行。延伸閱讀:初識 Uno Platform by 比爾叔

射完茶包,學到一些新知識,收工。

An old project failed to build after upgraded to VS2022, it turns out that an old x86 NuGet package can't work in 64bit VS2022.


Comments

Be the first to post a comment

Post a comment