起因:
由于公司项目使用场景存在很多的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://www.cnblogs.com/shanyou/archive/2013/04/27/3048181.html?utm_source=tuicool&utm_medium=referral
https://docs.microsoft.com/en-us/archive/blogs/bclteam/microsoft-bcl-async-is-now-stable