【发布时间】:2017-08-16 02:14:54
【问题描述】:
我已将 Microsoft.Bcl.Build/Microsoft.Bcl 和 Microsoft.Bcl.Async 添加到我想要使用 async/await 的解决方案中的一些项目中。 在我安装了 .Net4.5 的机器上一切正常。但是,当我在仅安装了 .Net4 的机器上启动应用程序时,有时应用程序会崩溃并出现以下异常:
无法加载文件或程序集“System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
查看 StackTrace,异常似乎是在我们引用的第三方库中生成的。
当我分析 Microsoft.Bcl.Async 提供的 Microsoft.Threading.Tasks.dll 时,我发现它确实引用了 System.Threading.Tasks 版本 1.5.11.0,但版本 2.6.10.0 包含在 Microsoft.Bcl 中。
我做错了吗?
【问题讨论】:
-
最早支持的 .NET 版本是 4.5.2。您应该升级并摆脱 BCL Async。 4.5.2 还增加了对 TLS 1.2 的支持,每天都有更多服务需要,例如 Google、银行、航空公司。
-
PS“只有”4.0 的机器可能很快通过 Windows 更新获得 4.5.2,如果它还没有的话。
-
PPS - 开源库在 9 个月内开始放弃对 4.0 的支持。例如 Json.NET 10.0 刚刚放弃 4.0 支持
-
@PanagiotisKanavos 我不是为了好玩而使用 Microsoft.Bcl 你知道吗?由于缺少 Windows XP 支持,并不是每个人都可以升级到 4.5。不要告诉我也不支持 Windows XP。我知道。机器只安装了 4.0,因为我卸载了 4.5 来重现 bug 报告。许多客户出于某种原因禁用了更新。
-
我不得不说。杀手锏是 TLS 1.2。您将无法很快连接到 Web 和 REST 服务。至于原因,只要您在合同中包含赔偿条款,免除您因缺少更新或加密损坏而导致的安全漏洞......
标签: c# .net .net-4.0 async-await