起因:
由於公司專案使用場景存在很多的XP環境,導致使用.NET Framework版本不能大於4.0版本。最近開發新功能時;從nuget上下載一個開源dll(該dll 4.0 版本依賴 Microsoft.Bcl.Async 專案 )。本地編譯很開心輕鬆編譯通過,提交專案後同事編譯後各種報錯。就開啟後續系列旅程。
過程問題:
1、同事環境編譯失敗總是報錯。
最終排查出引用的依賴dll提交到TFS中檔案不是對應使用版本的(.NET 4.0版本)
2、編譯成功後專案引用後編譯引用專案報錯。
該問題根據提示需要對相關專案瞭解
解決辦法:
由於對Microsoft.Bcl.Async 不瞭解,那麼首先對該專案進行了相關了解:
穩定版本釋出:https://docs.microsoft.com/en-us/archive/blogs/bclteam/microsoft-bcl-async-is-now-stable
該包允許開發者在.NET 4、Silverlight 4和Windows Phone 7.5使用C# 5和VB中的非同步特性。該包由三個庫組成:Microsoft.Bcl、Microsoft.Bcl.Async和Microsoft.Bcl.Build。由於使用了程式集統一的方式,解決方案中的所有工程都必須引用這三個庫。
通過了解得到:
1、Microsoft.Bcl.Async支援在.NET Framework4.0中可以使用async/await,而不需要把專案更改為 4.5版本.
2、.NET Framework 4需要帶有KB2468871補丁
3、引用依賴Microsoft.Bcl.Async專案的dll時,需要將Microsoft.Bcl,Microsoft.Bcl.Async和Microsoft.Bcl.Build的引用新增到上述警告的專案
總結:
1、在專案引用DLL時,一定要細心檢查引用DLL的版本(非Nuget包管理方式)
2、引用依賴Microsoft.Bcl.Async專案的程式集時,需要再該專案也新增Microsoft.Bcl、Microsoft.Bcl.Async和Microsoft.Bcl.Build三個庫引用。
引用:
https://docs.microsoft.com/en-us/archive/blogs/bclteam/microsoft-bcl-async-is-now-stable