GitHub Copilot-problemen bij modernisering oplossen

In dit artikel worden veelvoorkomende problemen behandeld die kunnen optreden wanneer u GitHub Copilot modernisering gebruikt voor .NET, ingedeeld op categorie. Elke vermelding volgt een structuur van probleem, oorzaak en oplossing, zodat u snel problemen kunt vinden en oplossen.

Werkstroomproblemen

Deze problemen hebben betrekking op scenariodetectie, hervatting van werk en taakstatus.

Agent zegt 'geen scenario's gevonden'

Cause: De agent herkent de werkruimte niet als een .NET project.

Solution:

  1. Controleer of de hoofdmap van de werkruimte een .sln, .csprojof .vbproj bestand bevat.
  2. Vraag het de agent: "Welke oplossing of projectbestand gebruikt u?"
  3. Als uw oplossing of projectbestand zich in een submap bevindt, opent u die map als de hoofdmap van de werkruimte of wijst u de agent expliciet naar het bestand.

De agent kan het vorige werk niet hervatten

Oorzaak: De .github/upgrades/ map, waarin de agent alle status opslaat, ontbreekt of is beschadigd.

Solution:

  1. Controleer of de .github/upgrades/ map bestaat in de hoofdmap van je repository.
  2. Als u de map per ongeluk hebt verwijderd, start u het scenario opnieuw. De agent kan niet herstellen zonder de statusbestanden.
  3. Als de map bestaat maar bestanden beschadigd lijken, vraagt u de agent om ze opnieuw te beoordelen en opnieuw te plannen .

Aanbeveling

Voer de .github/upgrades/ map door naar uw vertakking, zodat deze behouden blijft in sessies en computers.

Taken die in uitvoering zijn vastgelopen

Oorzaak: De vorige sessie is beëindigd terwijl de agent halverwege de taak was.

Solution:

  1. De agent detecteert in de meeste gevallen verouderde taken automatisch. Vertel de agent 'hervatten' of 'start de huidige taak opnieuw op.'
  2. Als de vastgelopen status zich blijft voordoen, geeft u de agent opdracht om de huidige taak als in behandeling te markeren en deze opnieuw te starten of te herbeoordelen en door te gaan vanaf de laatste voltooide stap.
  3. Controleer het bijbehorende progress-details.md bestand om te begrijpen waar de vorige sessie is gestopt.

Agent blijft het verkeerde scenario voorstellen

Oorzaak: De analyse van de agent heeft onverwachte projectkenmerken opgehaald en een ander scenario afgeleid dan u bedoelde.

Solution:

Wees expliciet over wat u wilt. In plaats van 'mijn project bijwerken', zegt u:

  • "Ik wil upgraden naar .NET 10."
  • "Ik wil upgraden van Newtonsoft.Json naar System.Text.Json."
  • 'Converteer mijn project naar sdk-indeling'.

Voeg scenariovoorkeuren toe aan scenario-instructions.md om toekomstige verschillen te voorkomen.

Problemen met bouwen en compileren

Deze problemen hebben betrekking op buildfouten, NuGet-herstelproblemen en fouten bij het genereren van code.

Build mislukt na wijzigingen van de agent

Oorzaak: Upgrades kunnen belangrijke API-wijzigingen, ontbrekende pakketten of incompatibele codepatronen veroorzaken.

Solution:

  1. Vertel de agent over de fout. De agent analyseert fouten automatisch.
  2. Als de agent het probleem niet kan oplossen, herstelt u de laatste doorvoering (git revert HEAD) en vraagt u de agent een andere aanpak te proberen.
  3. Voor complexe fouten, controleer execution-log.md om te begrijpen wat de agent heeft gewijzigd en in welke volgorde.

NuGet-herstel mislukt

Oorzaak: Pakketcompatibiliteit met het doelframework of verificatiefouten met privé NuGet-feeds.

Solution:

  • Voor privéfeeds: Verifieer bij de feed voordat u de upgrade start.
  • Voor incompatibele pakketten: Vertel de agent welk pakket problematisch is. De agent kan zoeken naar compatibele versies of alternatieve pakketten voorstellen.
  • Voor problemen met feedconnectiviteit: Controleer of u handmatig kunt uitvoeren dotnet restore . Los eerst eventuele feedproblemen op en laat de agent het opnieuw proberen.

Agent genereert code die niet wordt gecompileerd

Oorzaak: Door AI gegenereerde code kan fouten bevatten, met name in edge-gevallen of met ongebruikelijke API-patronen.

Solution:

  1. De agent detecteert automatisch compilatiefouten. Als de agent moeite heeft, geeft u hulp of herstelt u de code handmatig en laat u de agent weten door te gaan.
  2. Als de agent na meerdere pogingen moeite heeft met een specifieke oplossing, bewerkt u de code handmatig en vertelt u de agent: 'Ik heb de compilatiefout in MyClass.cs opgelost, markeer deze taak als voltooid.'
  3. De agent leert van uw handmatige oplossing en past vergelijkbare patronen toe wanneer hetzelfde probleem ergens anders wordt weergegeven.

Git-problemen

Opmerking

De agent werkt ook met niet-Git-mappen. Als uw werkruimte geen Git-opslagplaats is, slaat de agent Git-bewerkingen (vertakking, doorvoeren) over en past deze wijzigingen rechtstreeks toe op uw bestanden. Maak zonder Git handmatig een back-up van uw project voordat u begint, zodat u indien nodig kunt terugkeren.

Agent kan geen branch maken

Oorzaak: Niet-doorgevoerde wijzigingen in de werkstructuur, een conflict met de naamgeving van vertakkingen of Git worden niet geïnitialiseerd in de werkruimte.

Solution:

  1. Voer uw in behandeling zijnde wijzigingen door of sla ze vast voordat u een scenario start.
  2. Controleer of Git is geïnitialiseerd door de commandoregel git status uit te voeren in de hoofdmap van de werkruimte.
  3. Als er al een vertakking met de beoogde naam van de agent bestaat, verwijdert u de bestaande vertakking of vraagt u de agent om een andere vertakkingsnaam te gebruiken.

Alle agentwijzigingen ongedaan maken

Oorzaak: De upgrade is niet zoals gepland en u wilt opnieuw beginnen.

Solution:

  1. Ga terug naar je oorspronkelijke tak met git checkout main (of je basistak).
  2. De werkbranch van de agent bevat alle wijzigingen die zijn geïsoleerd van uw hoofdbranch.
  3. Als u de tak van de agent volledig wilt verwijderen, voert u git branch -D <agent-branch-name> uit.
  4. Als u bepaalde wijzigingen wilt behouden, kunt u specifieke commits cherry-picken met git cherry-pick <commit-hash>.

Aanbeveling

De Agent maakt gedetailleerde commits per taak, zodat u selectief de wijzigingen kunt behouden die gewerkt hebben.

Prestatieproblemen

Deze problemen hebben betrekking op de upgradesnelheid en evaluatieduur.

Agent is traag of heeft veel tijd nodig

Oorzaak: Grote oplossingen met veel projecten, complexe afhankelijkheidsgrafieken of talloze belangrijke wijzigingen duren natuurlijk langer.

Solution:

Voor grote oplossingen (meer dan 50 projecten) kunt u overwegen om een upgrade uit te voeren in batches. Groepeer gerelateerde projecten en werk ze gezamenlijk bij.

Evaluatie duurt lang

Oorzaak: De evaluatie analyseert de afhankelijkheden van elk project, NuGet-pakketten, doelframeworks en toepasselijke breaking changes. Voor grote oplossingen duurt de evaluatie natuurlijk langer.

Solution:

  1. Lange evaluatietijden zijn normaal voor grote oplossingen. Er is geen actie nodig.
  2. Controleer de voortgang in het deelvenster Output (selecteer AppModernizationExtension in de vervolgkeuzelijst in Visual Studio).
  3. De evaluatie wordt slechts één keer per scenario uitgevoerd. In volgende fasen worden de resultaten in de cache gebruikt.

Problemen met aanpassing

Deze problemen hebben betrekking op aangepaste vaardigheden en scenario-instructiebestanden.

Aangepaste functionaliteit wordt niet herkend

Oorzaak: Het vaardigheidsbestand bevindt zich op de verkeerde locatie, heeft ontbrekende of ongeldige metagegevens of heeft een onjuiste indeling.

Solution:

  1. Controleer of het vaardigheidsbestand zich op een van de ondersteunde locaties bevindt:
    • .github/skills/ (repository-niveau, teamwijd)
    • .github/upgrades/skills/ (scenarioniveau)
    • %UserProfile%/.copilot/skills/ (gebruikersniveau, persoonlijk)
  2. Controleer of de metagegevens van de vaardigheid ten minste name en description velden bevatten.
  3. Controleer of het discovery veld (indien ingesteld) een van: lazy, preload, of scenario.
  4. Controleer of de vaardigheid description overeenkomt met het soort taak waarop u verwacht dat deze van toepassing is. De agent gebruikt beschrijvingsmatching om vaardigheden te selecteren.

Wijzigingen in scenario-instructions.md kunnen niet van kracht komen

Oorzaak: De agent kan het middengedeelte van het bestand mogelijk niet opnieuw lezen of uw bewerkingen bevinden zich in de verkeerde sectie.

Solution:

  1. Vraag de agent om instructies opnieuw te laden of een nieuwe chatsessie te starten om opnieuw te lezen.
  2. Controleer of uw bewerkingen zich in de juiste secties van het bestand bevinden:
    • Gebruikersvoorkeuren: Voor algemene voorkeuren en beperkingen.
    • Belangrijke beslissingen: Voor het vastleggen van belangrijke beslissingen die tijdens de upgrade zijn genomen.
    • Aangepaste instructies: Voor specifieke gedragsaanpassingen.
  3. Controleer of het bestand is opgeslagen en in het verwachte pad: .github/upgrades/{scenarioId}/scenario-instructions.md.

Hulp krijgen

Wanneer iets niet werkt zoals verwacht:

  1. Vraag het de agent: Vraag 'Wat is er misgegaan met de laatste taak?' De agent kan vaak uitleggen wat er is gebeurd en de volgende stappen voorstellen.
  2. Bekijk het uitvoeringslogboek: Open execution-log.md in .github/upgrades/{scenarioId}/. In het logboek wordt een chronologische record weergegeven van wat de agent heeft gedaan, inclusief eventuele fouten die zijn opgetreden.
  3. Dien een probleem in: Als u een fout hebt gevonden of de agent consequent faalt in iets, dien een probleem in bij de @modernize-dotnet GitHub-repository.