發表文章

目前顯示的是 2月, 2024的文章

Could not load file or assembly 'System.Buffers' 無法載入檔案或組件....

最近遇到C# windows form 的老專案必須使用 smtpclient寄信,但因為MailServer限制使用starttls與587port寄信,使用原來net 的 smtpclient 不能支援此方法,所以必須改用Mailkit組件。 由於原來專案使用.net  Framework 4.5.x版本過舊,咬牙升級為 .net Framework 4.7.1。 Mailkit看似搞定,但在建置過程中卻會看到警訊,   Could not load file or assembly 'System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly 's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 此問題的發生原因是Mailkit需要較新版本的System.Buffers等組件dll,透過nuget更新版本後,專案仍然記載要去拿原來的dll。 解決方法如下 <1>重新註冊元件 透過系統VisualStudio選單底下的開發人員終端機介面(要使用系統管理員權限執行),進到專案packages目錄之下擺放特定組件的位置,重新註冊元件。 教學文內的目錄是 netstandard2.0,傳統.net framework要選.net framework的版本 cd d:/project_folder/packages/System.Buffers.4.5.1/lib/ netstandard2.0 / 然後執行 gacutil /i System.Buffers.dll 接著回到Visual Studio內的Nuget 套件管理員( package manager console),透過powershell重新安裝套件。 update-package -reinstall 用文字模式打開   csproj 檔案,確認引用組件的版本改為4.0.3.0 (Version=4....