升级VS2022后Xamarin真机调试遇Mono.AndroidTools.AdbException错误求助
Xamarin真机调试崩溃(VS2022升级后):WSACancelBlockingCall错误解决办法
问题重现
升级Visual Studio 2022后,Xamarin应用真机调试时抛出以下错误,重启ADB、清理bin/obj等常规操作无效:
Mono.AndroidTools.AdbException: Unable to read data from the transport connection: A blocking operation was interrupted by a call to WSACancelBlockingCall ---> System.IO.IOException: Unable to read data from the transport connection: A blocking operation was interrupted by a call to WSACancelBlockingCall ---> System.Net.Sockets.SocketException: A blocking operation was interrupted by a call to WSACancelBlockingCall at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.IO.StreamReader.ReadBuffer() at System.IO.StreamReader.ReadLine() at Mono.AndroidTools.Adb.AdbClient.ReadLineWhile(Action`1 output, Func`1 predicate) in D:\a_work\1\s\External\androidtools\Mono.AndroidTools\Adb\AdbClient.cs:line 585 --- End of inner exception stack trace --- at Mono.AndroidTools.Adb.AdbClient.ReadLineWhile(Action`1 output, Func`1 predicate) in D:\a_work\1\s\External\androidtools\Mono.AndroidTools\Adb\AdbClient.cs:line 592 at Mono.AndroidTools.AndroidDevice.<>c__DisplayClass119_0.b__0() in D:\a_work\1\s\External\androidtools\Mono.AndroidTools\AndroidDevice.cs:line 1021 [E:RunShellCommand]: R52T40K8JGK logcat -v time "dalvikvm:S" "ActivityThread:S" "mkestner:S" "MonoDroid-Debugger:S" failed: Mono.AndroidTools.AdbException: Unable to read data from the transport connection: A blocking operation was interrupted by a call to WSACancelBlockingCall ---> System.IO.IOException: Unable to read data from the transport connection: A blocking operation was interrupted by a call to WSACancelBlockingCall ---> System.Net.Sockets.SocketException: A blocking operation was interrupted by a call to WSACancelBlockingCall at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.IO.StreamReader.ReadBuffer() at System.IO.StreamReader.ReadLine() at Mono.AndroidTools.Adb.AdbClient.ReadLineWhile(Action`1 output, Func`1 predicate) in D:\a_work\1\s\External\androidtools\Mono.AndroidTools\Adb\AdbClient.cs:line 585 --- End of inner exception stack trace --- at Mono.AndroidTools.Adb.AdbClient.ReadLineWhile(Action`1 output, Func`1 predicate) in D:\a_work\1\s\External\androidtools\Mono.AndroidTools\Adb\AdbClient.cs:line 592 at Mono.AndroidTools.AndroidDevice.<>c__DisplayClass119_0.b__0() in D:\a_work\1\s\External\androidtools\Mono.AndroidTools\AndroidDevice.cs:line 1021
针对性解决步骤
- 降级Android SDK Build-Tools版本:VS2022默认安装的高版本Build-Tools可能存在兼容性问题,卸载当前版本(如34.0.0+),安装33.0.2版本,重启VS后重试调试。
- 调整ADB连接超时:打开VS的
工具 > 选项 > Xamarin > Android设置,将“ADB连接超时”从默认值调高至15000ms,执行adb kill-server和adb start-server重启服务。 - 禁用快速部署:在项目属性的Android选项卡中,取消勾选“快速部署”,清理项目后重新生成调试。
- 替换ADB版本:复制Android SDK platform-tools目录下的
adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll,替换VS安装目录下对应文件(路径通常为C:\Program Files\Microsoft Visual Studio\2022\<版本>\BuildTools\bin\Android\adb),重启VS和ADB。 - 检查设备连接:卸载并重装设备USB驱动,更换USB 2.0端口连接,重启设备的USB调试并重新授权计算机。
内容的提问来源于stack exchange,提问作者Craig Knight
相关产品推荐
相关产品推荐

