我在使用Visual Studio时遇到了麻烦,所以我尽可能地创建了一个简单的程序。我创建了一个控制台应用程序,该应用程序应该在控制台上显示一行,然后等待用户按下一个键。相反,它给了我一条错误消息。
我查找了错误消息,它正在讨论无效的句柄。我不确定哪个句柄可能无效。代码并不复杂(并且在我使用Visual Studio的任何一天都可以正常工作)。我不知道是什么可能导致此问题。我大约两个半星期没有使用Visual Studio,但是我仍然无法理解那段时间可能发生的情况。
我去过Microsoft帮助和支持网站(尽管我没有找到任何专门命名为“帮助和支持”的网站,但是我确实找到了MSDN和各种论坛)。我抬头看那个HRESULT。在我阅读的每篇文章中,它都在讨论一些Web应用程序错误。我还没有见过一篇提到在控制台应用程序中发生这种情况的文章,这就是为什么我如此受阻。我的下一步是尝试修复.NET Framework的安装,以查看是否有任何作用(我发现一些倾斜的引用说可能会有所帮助)。如果有人有什么想法,我会很感兴趣!
此外,我在Visual Studio 2013中尝试了相同的代码。在该IDE上运行良好。它仅在Visual Studio 2017中失败(自安装以来,我一直没有问题,然后卸载并重新安装它)。但是,我的VS 2013副本是社区版,我的工作刚刚为我购买了2017年的专业版许可证,因此,如果我可以使用它,我宁愿使用它。在这一点上非常令人沮丧。如果找不到其他答案,那么我的下一个选择就是将其卸载并重新安装。这将使我第五次或第六次需要这样做,所以我希望有其他解决方案。
编辑: 经过更多研究,我发现这只是调试代码时的问题。如果我使用“不调试启动”选项通过Visual Studio运行代码,则该代码运行不会出现问题。而且由于我能够在调试模式下在同一台计算机上使用VS 2013而不会出现问题,因此似乎可以排除Windows问题。该问题可能仅限于VS 2017。
我计划卸载并重新安装VS 2017,但这是一个漫长的过程。因此,在此之前,我仍在寻找其他可能的解决方案。
更新:
我在事件查看器中找到了崩溃报告。这是日志:
故障桶2243818120991372909,类型1 事件名称:APPCRASH 响应:不可用 出租车编号:0
问题签名: P1:HelloWorldTest3.exe P2:1.0.0.0 P3:cc00d718 P4:StackHash_cad8 P5:0.0.0.0 小六:00000000 P7:c0000008 P8:PCH_E2_FROM_ntdll + 0x0006A2DC P9: P10:
附加文件: \?\ C:\ ProgramData \ Microsoft \ Windows \ WER \ Temp \ WERB1A6.tmp.dmp \?\ C:\ ProgramData \ Microsoft \ Windows \ WER \ Temp \ WERB427.tmp.WERInternalMetadata.xml \?\ C:\ ProgramData \ Microsoft \ Windows \ WER \ Temp \ WERB486.tmp.xml \?\ C:\ ProgramData \ Microsoft \ Windows \ WER \ Temp \ WERB494.tmp.csv \?\ C:\ ProgramData \ Microsoft \ Windows \ WER \ Temp \ WERB4D3.tmp.txt
这些文件可以在这里找到: C:\ ProgramData \ Microsoft \ Windows \ WER \ ReportArchive \ AppCrash_HelloWorldTest3._40a823464c1b7f1a36d57ccec8a525baac94eb58_92da583c_48deb87c
分析符号: 重新检查解决方案:0 报告ID:a085ff02-7bff-4a22-8d90-3f52094b2f8f 报告状态:268435456 雾斗:334244e30a9d2a234f23a4b15a46766d 出租车指引:0
这是否能说明其崩溃的原因?我还列出了当时加载的.dll,但我看不到任何会导致其崩溃的东西。
更新#2:
我尝试以安全模式重启。这解决了问题。因此,然后我尝试一个接一个地重新启动服务,以查找导致调试器崩溃的服务。但是,Windows不允许我在安全模式下启动任何其他服务。因此,我决定尝试相反的方法。我以正常模式重新启动,并开始一个接一个地关闭服务。最后,我将Windows允许关闭的所有服务都设置为off,但是问题仍然存在。这看起来越来越像Windows Update破坏了某些东西。
更新#3:我们激活了Microsoft技术支持合同。他们指派的支持工程师让我发送了内存转储以及APPCRASH事件期间运行Procmon的结果。发送信息后,我还没有收到回音,也没有任何消息说可能出什么问题了。工程师在过去两天(上周周五和本周周一)一直不理我的电子邮件。因此,我什至无法获得最新进展。这是一个非常令人沮丧的问题,无法解决,因为它实际上不会生成容易找到的错误消息。当我了解更多信息时,我将不断更新。感谢所有尝试提供帮助的人。
更新#4: Microsoft检查了转储文件和Procmon结果。他们发现错误出在CLR中(这很奇怪,因为VS 2013可以毫无问题地进行调试...),它特别是在以下dll方法中: win32u!NtUserMsgWaitForMultipleObjectsEx
Microsoft说,转储中未包含该问题的详细信息,因此他们将继续处理该问题。同时,我卸载了趋势科技,重新启动计算机,卸载了VS 2017,重新启动了计算机,重新安装了VS 2017,重新启动了计算机,但VS 2017调试器仍然无法正常工作。我还修复了每个.NET Framework版本,以防其中任何一个损坏,再次重新启动,以防万一我没有足够的重新启动,以及仍然没有运气。唯一有效的方法是以安全模式启动计算机。
答案 0 :(得分:1)
我知道已经有两年了,但是在几个星期后问题解决之后,我忘记了这一点。微软最终发现问题是我公司用来监视员工活动的软件Veriato。
一旦他们禁用了该软件,Visual Studio就会正常工作。 Veriato最终为此发布了一个补丁。但是,这是我什至不知道在我的机器上安装的软件,因为它具有与病毒相似的代码模式,因此可以隐藏。微软甚至很难找到它。最终,我们的IT部门识别出其中一个文件的名称,然后将它们放在一起导致了问题。