C#Visual Studio在启动调试器时长时间挂起

时间:2018-02-08 00:28:32

标签: c#

My Winforms应用程序引用了一个名为MyUtilities.dll的本地DLL文件。每当我在进行任何代码更改后开始调试我的应用程序并且它使用MyUtilities.dll中的方法来对远程SOAP API进行网络调用时,VS会挂起大约90秒,当我尝试单击任何位置时VS,它会显示弹出窗口,上面写着“为MyUtilities.dll加载符号”。

这里有趣的地方:

  1. PDB文件未使用EFS加密。
  2. 启用了我的代码调试。
  3. 我甚至将MyUtilities.dll添加到了排除列表中。
  4. 当它挂起时CPU使用率并没有真正飙升。
  5. 我曾尝试使用Process Monitor(procmon)观看活动,但我没有看到任何异常,但我可能会看错了...
  6. 我同时加载了Fiddler以查看它是否是一个很长的远程API调用但是SSL握手和网络调用甚至没有开始,直到~90秒结束,并且实际的API调用返回到1秒。
  7. 我尝试将DLL文件复制到SSD上的其他文件夹并从那里引用它,但它没有什么区别。
  8. 如果我在没有任何代码更改的情况下再次启动/重新启动调试器,它就不会冻结。
  9. 现在,在它恢复运行后,我可以在输出中看到它没有加载符号):

    'MyApp.exe' (blah blah): Loaded 'C:\...\bin\Debug\MyUtilities.dll'. Loading disabled by Include/Exclude setting.
    

    关于什么可能导致冻结的任何想法?我正在运行VS 2017社区。

1 个答案:

答案 0 :(得分:2)

想出来。在Process Monitor中进行了一些分析之后,我注意到" MAILSLOT \ NET \ NETLOGON"的条目。像:

11:21:04    CreateFile    \\MYPC*\MAILSLOT\NET\NETLOGIN    SUCCESS
11:21:04    WriteFile     \\MYPC*\MAILSLOT\NET\NETLOGIN    BAD NETWORK PATH
11:21:17    CloseFile     \\MYPC*\MAILSLOT\NET\NETLOGIN    SUCCESS

基于此,我发现了这个StackOverflow问题: Visual studio 2012 slow unit testing

......这让我想到了这篇文章: https://social.technet.microsoft.com/Forums/windowsserver/en-US/20eb50e9-3e68-4d29-bcdd-a4fc166b9c00/adlds-very-slow-roundtrip-to-servermailslotnetnetlogon?forum=winserverDS

结束结果:进入每个网络适配器,转到其属性,进入Internet协议版本4(TCP / IPv4)属性,转到高级 - > WINS并禁用TCP / IP上的NetBIOS。

在这样做之后,一切都很完美(甚至不需要重启)。