编译后找不到System.Threading.Tasks.Extensions?调试正常版本不匹配求助
System.Threading.Tasks.Extensions版本不匹配问题解决建议
- 强制绑定正确版本:在项目的
app.config或web.config中添加绑定重定向配置,把加载的旧版本定向到你实际引用的版本。比如你项目用的是4.3.0版本,就加这段代码(注意替换newVersion为你实际安装的版本号,publicKeyToken可在NuGet包详情里找到):
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.3.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
清理重建项目:
- 右键解决方案,选择「清理解决方案」
- 删除项目目录下的
bin和obj文件夹 - 重新右键解决方案选择「生成解决方案」
排查间接依赖:有些第三方NuGet包会间接引用旧版本的
System.Threading.Tasks.Extensions。打开NuGet包管理器的「已安装」标签,查看各包的依赖关系,找到带旧版本的依赖包,要么更新该包到最新版,要么在项目的PackageReference节点里明确指定System.Threading.Tasks.Extensions的版本。检查NuGet包源:确保你的NuGet包源是官方nuget.org,私有源可能存在版本缓存。可以在「工具→选项→NuGet包管理器→包源」里暂时禁用其他源,只保留官方源,然后重新安装你需要的版本。
手动替换程序集:如果以上方法都无效,找到你安装的目标版本NuGet包所在目录(通常在
C:\Users\你的用户名\.nuget\packages\system.threading.tasks.extensions\对应版本\lib\下,根据项目框架选择对应子文件夹),把里面的System.Threading.Tasks.Extensions.dll复制到项目的bin目录,覆盖旧文件。
内容的提问来源于stack exchange,提问作者Reinder Weenink
相关产品推荐
相关产品推荐

