Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u fouten in een Visual Studio-extensie opsbugt, wordt een speciaal exemplaar van Visual Studio met de naam Experimenteel exemplaar gebruikt om uw extensie te hosten terwijl u het foutopsporingsprogramma uitvoert in de hoofdversie van Visual Studio IDE. De twee instanties draaien onafhankelijk naast elkaar. In dit artikel wordt beschreven hoe u fouten kunt opsporen in extensies die zijn gemaakt met de VisualStudio.Extensibility SDK wanneer ze worden uitgevoerd in het experimentele exemplaar van de Visual Studio IDE.
Extensieprocessen
Het foutopsporingsproces verschilt enigszins, afhankelijk van of uw extensie in-proces of buiten proces wordt uitgevoerd. Zie Uw eerste VSSDK-compatibele VisualStudio.Extensibility-extensie maken. Met een out-of-process-extensie wordt uw extensie uitgevoerd in een speciaal proces voor Visual Studio-extensies. Dit proces, genaamd Microsoft.ServiceHub.Host.Extensibility, zorgt voor alle communicatie tussen het IDE-proces van Visual Studio en het proces dat als host fungeert voor uw extensie. Wanneer u een extensie start met F5, start Visual Studio Experimenteel exemplaar en maakt verbinding met het proces dat als host fungeert voor uw extensie. Meestal hoeft u zich geen zorgen te maken over het exacte proces, omdat wanneer u het foutopsporingsprogramma start vanuit een extensieproject door in de Visual Studio IDE te drukken F5 , Visual Studio het juiste proces zoekt om het foutopsporingsprogramma te verbinden met.
Wanneer u een foutopsporingssessie start, worden uw extensieassembly en de bijbehorende symbolen niet onmiddellijk geladen. Voordat uw extensie wordt geladen, houdt Visual Studio de plaatsen bij waar de extensie kan worden geactiveerd. Deze informatie wordt beheerd in een intern exemplaar van VisualStudioContribution. Zelfs voordat de extensie wordt geladen, bevat Visual Studio informatie over waar deze kan worden geactiveerd, bijvoorbeeld wanneer de gebruiker een bepaald menu-item kiest, op een werkbalkknop drukt of een bestand van een bepaald type in de editor laadt. De assembly van uw extensie wordt pas geladen als deze is geactiveerd in de IDE. Bij foutopsporing moet u dus eerst actie ondernemen in de Visual Studio IDE om de extensie te activeren voor laden. Mogelijk moet u bijvoorbeeld het menu-item of de werkbalkknop van uw extensie selecteren. Op dat moment wordt uw extensieassembly geladen, wordt de initialisatiecode uitgevoerd en kunt u onderbrekingspunten bereiken en code doorlopen. De eerste code die in uw extensie moet worden uitgevoerd, is de InitializeAsync methode in de Extension klasse en de volgende methode is InitializeServices.
Processen en aanroepstapels
Als uw extensie wordt verwerkt, bevat de aanroepstack Visual Studio-stackframes en de stackframes van uw extensie. Symbolen zijn normaal gesproken niet beschikbaar voor Visual Studio, maar u kunt de aanroepen zien waarbij Visual Studio uw extensie aanroept.
Met een out-of-process-extensie ziet u alleen de aanroepstack van uw extensie; Visual Studio-stackframes bevinden zich in een afzonderlijk proces. Visual Studio roept uw extensie aan via JsonRpc-compatibele interfaces, de ServiceHub-host stuurt de aanroep en vervolgens begint de uitvoering in uw proces in de callback. Besturing keert terug naar Visual Studio wanneer uw callback terugkeert.
De status wordt naar behoefte doorgegeven aan uw extensie in verschillende methoden en verpakt door een IClientContext exemplaar voor eenvoudig gebruik, maar het is belangrijk om te overwegen dat het een momentopname is van de status, die kan veranderen tussen de tijd van de momentopname en het tijdstip waarop u deze leest vanuit de extensiecode of het bekijken ervan in het foutopsporingsprogramma.
Er is enige interne code in het ServiceHub-hostproces die verantwoordelijk is voor de afhandeling van de RPC-brokering (Remote Procedure Call). Als er een fout optreedt in deze laag, is deze niet zichtbaar voor u. Dergelijke fouten moeten worden gerapporteerd als productproblemen.
Fouten opsporen in de extensie in het experimentele exemplaar van Visual Studio
Open het extensieproject.
Stel een onderbrekingspunt in, bijvoorbeeld in de methode van uw extensie
InitializeServices, op de hoofdklasse die vanExtensionis afgeleid. Als u een onderbrekingspunt wilt instellen op een regel code, klikt u op de regel en drukt u opF9.Kies in het hoofdmenu Debug Start Debugging > of druk op
F5. Visual Studio Experimental Instance wordt gestart; tegelijkertijd wordt het ServiceHub-hostproces gestart.Voer de stappen uit in het experimentele exemplaar van Visual Studio waardoor uw extensie wordt geactiveerd of om het scenario te reproduceren dat u wilt opsporen.
Visual Studio stopt op een onderbrekingspunt.
Aanbeveling
Het kan handig zijn om meerdere monitors te hebben, zodat u zowel het foutopsporingsprogramma als het experimentele exemplaar tegelijkertijd op twee verschillende monitors kunt zien. Mogelijk wilt u het thema in het experimentele exemplaar wijzigen om het duidelijker te maken met welke IDE u op elk gewenst moment werkt. Zie Lettertypen, kleuren en thema's wijzigen in Visual Studio.
Fouten opsporen in de extensie met behulp van Diagnostics Explorer
Zie VisualStudio.Extensibility Diagnostics Explorer voor meer informatie.
Probleemoplossingsproces
Wanneer u het foutopsporingsprogramma start, als u de fout ziet dat deze extensie niet wordt ondersteund in het huidige product, opent u het .vsixmanifest bestand en controleert u het InstallationTarget element. Het installatiedoel Microsoft.VisualStudio.IntegratedShell wordt niet ondersteund. Gebruik Microsoft.VisualStudio.Community in plaats daarvan. Zie VSIX Extension Schema 2.0 Reference.