Como faço para diagnosticar e corrigir uma falha no Visual Studio (por exemplo, 2015, 2017)?

Estou usando o Visual Studio 2015 em um ambiente do Windows 10. O Visual Studio está constantemente falhando. A solução abre bem, mas depois de digitar algumas letras recebo uma mensagem dizendo que ocorreu um erro eo Visual Studio deve ser desligado. Eu procurei on-line e descobri como executar o VS no modo de diagnóstico (devenv / log). Eu tentei isso e ver vários erros em ActivityLog.xml. Eu não sei o que isso significa e não consigo encontrar nada on-line sobre eles. Atualizei todas as extensões do Visual Studio, mas isso não ajudou. Tentei reparar o VS, mas isso também não ajudou. Alguém pode explicar como eu posso diagnosticar e consertar o problema?

Aqui estão as mensagens de erro no log:

 161 2017/05/08 14:53:38.815 Error Microsoft.VisualStudio.CommonIDE.ExtensibilityHosting.VsShellComponentModelHost Still unable to load MEF component DLL: Could not load file or assembly 'Microsoft.VisualStudio.Workspaces.Contracts, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\RV0KRPV2.PBV\TMLanguage.dll   162 2017/05/08 14:53:38.822 Error Microsoft.VisualStudio.CommonIDE.ExtensibilityHosting.VsShellComponentModelHost Still unable to load MEF component DLL: Could not load file or assembly 'Microsoft.VisualStudio.WindowsAzure.CommonAzureTools.Contracts.1.7, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\2re3mhbz.g1s\Microsoft.VisualStudio.ApplicationInsights.dll   163 2017/05/08 14:53:38.830 Error Microsoft.VisualStudio.CommonIDE.ExtensibilityHosting.VsShellComponentModelHost Still unable to load MEF component DLL: Could not load file or assembly 'Microsoft.VisualStudio.ApacheCordovaTools.Definitions.14.0, Version=14.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\22KH2U4Y.XLJ\Microsoft.VisualStudio.Azure.ConnectedServices.MobileServices.dll  

Para diag falhas do Visual Studio, você precisa gerar um despejo de memory , que inclui o estado atual do Visual Studio.

Para gerar esse despejo de memory, você pode configurar o Relatório de Erros do Windows para gerar dumps executando o regedit.exe , vá para HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe crie uma string DumpFolder e dê a ela um nome como C:\localdumps e crie um DWORD 32Bit chamado DumpType e defina-o como 2 para gerar um despejo completo.

Depois que o Visual Studio travar e você tiver um despejo, instale as ferramentas de debugging para Windows, que fazem parte do Windows 10 SDK .

Durante a instalação, você só precisa selecionar as Debugging Tools for Windows

insira a descrição da imagem aqui

todos os outros podem ser ignorados.

Agora execute 32 Bit / x86 Windbg.exe (porque o Visual Studio é um applaction 32Bit / x86), dentro do Windbg, configure os símbolos de debugging , abra o dmp via File-> Open crash dump (ou CTRL + D ) e digite !analyze -v na linha de comando no buttom

insira a descrição da imagem aqui

e agora pressione ENTER. Agora Windbg carrega os símbolos de debugging necessários, analisa o despejo e mostra alguns dados. No meu exemplo, vejo isso:

 BUGCHECK_STR: CLR_EXCEPTION_REMOTE_System.NullReferenceException DEFAULT_BUCKET_ID: CLR_EXCEPTION_REMOTE_System.NullReferenceException PRIMARY_PROBLEM_CLASS: CLR_EXCEPTION STACK_TEXT: 00000000 00000000 Microsoft_VisualStudio_Platform_WindowManagement_ni!Microsoft.VisualStudio.Platform.WindowManagement.DTE.MainWindow..ctor+0x0 00000000 00000000 Microsoft_VisualStudio_Platform_WindowManagement_ni!Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase.CreateMainWindow+0x0 00000000 00000000 Microsoft_VisualStudio_Platform_WindowManagement_ni!Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService.get_MainWindow+0x0 00000000 00000000 UNKNOWN!EnvDTE._DTE.get_MainWindow+0x1 00aed828 11da97b8 UNKNOWN!VSWindowTitleChanger.VSWindowTitleChangerPackage.DelayedInit+0x90 SYMBOL_NAME: Microsoft_VisualStudio_Platform_WindowManagement_ni!Microsoft.VisualStudio.Platform.WindowManagement.DTE.MainWindow..ctor MODULE_NAME: Microsoft_VisualStudio_Platform_WindowManagement_ni BUCKET_ID: CLR_EXCEPTION_REMOTE_System.NullReferenceException_Microsoft_VisualStudio_Platform_WindowManagement_ni!Microsoft.VisualStudio.Platform.WindowManagement.DTE.MainWindow..ctor FAILURE_IMAGE_NAME: Microsoft.VisualStudio.Platform.WindowManagement.dll BUCKET_ID_IMAGE_STR: Microsoft.VisualStudio.Platform.WindowManagement.dll FAILURE_MODULE_NAME: Microsoft_VisualStudio_Platform_WindowManagement_ni BUCKET_ID_MODULE_STR: Microsoft_VisualStudio_Platform_WindowManagement_ni FAILURE_FUNCTION_NAME: Microsoft.VisualStudio.Platform.WindowManagement.DTE.MainWindow..ctor BUCKET_ID_FUNCTION_STR: Microsoft.VisualStudio.Platform.WindowManagement.DTE.MainWindow..ctor BUCKET_ID_PREFIX_STR: CLR_EXCEPTION_REMOTE_System.NullReferenceException_ 

Portanto, o Visual Studio travou devido a uma System.NullReferenceException no módulo VSWindowTitleChanger que tenta alterar o título de uma janela antes de ser laoded corretamente e acessar um object com NULL. Esta é uma extensão do Visual Studio e removê-lo corrige a falha que eu tive na boot.

Se o Windbg for muito complicado, você pode usar o analisador DebugDiag. Primeiro faça o download da Ferramenta de Diagnóstico de Depuração v2 Atualização 2 , agora execute DebugDiag.Analysis.exe em C:\Program Files\DebugDiag , selecione CrashHangDumpAnalysis , agora clique em Add Data Files e selecione o dump.

insira a descrição da imagem aqui

Na última etapa, clique em Start Analysis . Agora o analisador verifica o despejo

insira a descrição da imagem aqui

e se isso estiver terminado, ele abre um Relatório mht com o resultado.