起因:
由於公司項目使用場景存在很多的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