Felsöka moderniseringen av GitHub Copilot

Den här artikeln beskriver vanliga problem som kan uppstå när du använder GitHub Copilot modernisering för .NET, ordnade efter kategori. Varje post följer ett problem-, orsaks- och lösningsformat så att du snabbt kan hitta och lösa problem.

Arbetsflödesproblem

De här problemen gäller scenarioidentifiering, återupptagande av arbete och uppgiftstillstånd.

Agenten säger "inga scenarier hittades"

Cause: Agenten känner inte igen arbetsytan som ett .NET projekt.

Lösning:

  1. Kontrollera att arbetsytans rot innehåller en .sln, .csprojeller .vbproj -fil.
  2. Fråga agenten: "Vilken lösning eller projektfil använder du?"
  3. Om din lösning eller projektfil finns i en underkatalog öppnar du katalogen som arbetsytans rot eller pekar agenten till filen explicit.

Agenten kan inte återuppta tidigare arbete

Orsaka: Mappen .github/upgrades/ , där agenten lagrar allt sitt tillstånd, saknas eller är skadad.

Lösning:

  1. Kontrollera om mappen .github/upgrades/ finns i lagringsplatsens rot.
  2. Om du har tagit bort mappen av misstag startar du scenariot på nytt. Agenten kan inte återställas utan dess tillståndsfiler.
  3. Om mappen finns men filerna verkar skadade ber du agenten att "omvärdera och planera om" för att återskapa dem.

Tips/Råd

Lägg till .github/upgrades/ mappen i din gren så att den bevaras mellan sessioner och datorer.

Uppgifter fastnade i processen

Orsaka: Föregående session avslutades medan agenten var mitt i aktiviteten.

Lösning:

  1. Agenten identifierar inaktuella uppgifter automatiskt i de flesta fall. Säg till agenten "återuppta" eller "starta om den aktuella aktiviteten".
  2. Om det fastnade tillståndet kvarstår anger du för agenten "markera den aktuella aktiviteten som väntande och starta om den" eller "utvärderar om och fortsätter från det senaste slutförda steget".
  3. Kontrollera motsvarande progress-details.md fil för att förstå var föregående session stoppades.

Agenten föreslår hela tiden fel scenario

Orsaka: Agentens analys hämtade oväntade projektegenskaper och härledde ett annat scenario än du avsåg.

Lösning:

Var tydlig med vad du vill ha. I stället för att "uppgradera mitt projekt" säger du:

  • "Jag vill uppgradera till .NET 10."
  • "Jag vill uppgradera från Newtonsoft.Json till System.Text.Json."
  • "Konvertera mitt projekt till SDK-format."

Lägg till scenarioinställningar i scenario-instructions.md för att förhindra framtida felmatchningar.

Problem med bygg och kompilering

De här problemen gäller byggfel, NuGet-återställningsproblem och kodgenereringsfel.

Bygget misslyckas efter agentens ändringar

Orsaka: Uppgraderingar kan introducera icke-bakåtkompatibla API-ändringar, saknade paket eller inkompatibla kodmönster.

Lösning:

  1. Berätta för agenten om felet. Agenten analyserar fel automatiskt.
  2. Om agenten inte kan lösa problemet återställer du den senaste committen (git revert HEAD) och ber agenten att prova en annan metod.
  3. För att hantera komplexa fel, kontrollera execution-log.md för att förstå vad agenten har ändrat och i vilken ordning.

NuGet-återställningen misslyckas

Orsak: Paketinkompatibilitet med målinramningen eller autentiseringsfel med privata NuGet-flöden.

Lösning:

  • För privata feeds: Autentisera till feeden innan du startar uppgraderingen.
  • För inkompatibla paket: Tala om för agenten vilket paket som är problematiskt. Agenten kan söka efter kompatibla versioner eller föreslå alternativa paket.
  • För problem med feedanslutning: Kontrollera att du kan köra dotnet restore manuellt. Åtgärda eventuella flödesproblem först och låt sedan agenten försöka igen.

Agenten genererar kod som inte kompileras

Orsaka: AI-genererad kod kan innehålla fel, särskilt i gränsfall eller med ovanliga API-mönster.

Lösning:

  1. Agenten identifierar kompileringsfel automatiskt. Om agenten har problem kan du ge vägledning eller åtgärda koden manuellt och be agenten att fortsätta.
  2. Om agenten kämpar med en specifik korrigering efter flera försök redigerar du koden manuellt och säger till agenten: "Jag har åtgärdat kompileringsfelet i MyClass.cs markerar den här uppgiften slutförd."
  3. Agenten lär sig av din manuella korrigering och tillämpar liknande mönster när samma problem visas någon annanstans.

Git-problem

Anmärkning

Agenten fungerar även med icke-Git-mappar. Om din arbetsyta inte är en Git-lagringsplats hoppar agenten över Git-åtgärder (förgrening, incheckning) och tillämpar ändringar direkt på dina filer. Utan Git säkerhetskopierar du projektet manuellt innan du börjar så att du kan återställa om det behövs.

Agenten kan inte skapa en gren

Orsak: Ocommiterade förändringar i arbetsträdet, en namnkonflikt för grenen eller Git är inte initierat i arbetsytan.

Lösning:

  1. Spara eller mellomlagra dina väntande ändringar innan du startar ett scenario.
  2. Kontrollera att Git initieras genom att köra git status i rotmappen för arbetsytan.
  3. Om det redan finns en gren med agentens avsedda namn tar du bort den befintliga grenen eller ber agenten att använda ett annat grennamn.

Ångra alla agentändringar

Orsaka: Uppgraderingen gick inte som planerat och du vill börja om.

Lösning:

  1. Växla tillbaka till den ursprungliga grenen med git checkout main (eller basgrenen).
  2. Agentens arbetsgren innehåller alla ändringar som är separerade från din huvudgren.
  3. För att ta bort agentens gren helt, kör git branch -D <agent-branch-name>.
  4. Om du vill behålla vissa ändringar, prioritera specifika commit-ar med git cherry-pick <commit-hash>.

Tips/Råd

Agenten gör detaljerade incheckningar per uppgift, så att du selektivt kan behålla de ändringar som fungerade.

Prestandaproblem

De här problemen gäller uppgraderingshastighet och utvärderingsvaraktighet.

Agenten är långsam eller tar lång tid

Orsaka: Stora lösningar med många projekt, komplexa beroendediagram eller många icke-bakåtkompatibla ändringar tar naturligtvis längre tid.

Lösning:

För stora lösningar (över 50 projekt) bör du överväga att uppgradera i batchar. Gruppera relaterade projekt och uppgradera dem tillsammans.

Utvärderingen tar lång tid

Orsaka: Utvärderingen analyserar varje projekts beroenden, NuGet-paket, målramverk och tillämpliga icke-bakåtkompatibla ändringar. För stora lösningar tar utvärderingen naturligtvis längre tid.

Lösning:

  1. Långa utvärderingstider är normala för stora lösningar. Ingen åtgärd krävs.
  2. Övervaka förloppet i panelen Output (välj AppModernizationExtension från listrutan i Visual Studio).
  3. Utvärderingen körs bara en gång per scenario. Efterföljande faser använder de cachelagrade resultaten.

Anpassningsproblem

De här problemen gäller anpassade kunskaper och scenarioinstruktionsfiler.

Anpassad funktion plockas inte upp

Orsaka: Kunskapsfilen är på fel plats, har saknade eller ogiltiga metadata eller har ett felaktigt format.

Lösning:

  1. Kontrollera att kunskapsfilen finns på någon av de platser som stöds:
    • .github/skills/ (lagringsplatsnivå, teamomfattande)
    • .github/upgrades/skills/ (scenarionivå)
    • %UserProfile%/.copilot/skills/ (användarnivå, personligt)
  2. Kontrollera att kunskapsmetadata innehåller minst name och description fält.
  3. Bekräfta att fältet (om det discovery anges) är något av: lazy, preloadeller scenario.
  4. Kontrollera att färdigheten matchar description den typ av uppgift som du förväntar dig att den ska gälla för. Agenten använder beskrivningsmatchning för att välja färdigheter.

Ändringar i scenario-instructions.md börjar inte gälla

Orsaka: Agenten kanske inte läser om filen i mitten av sessionen, eller så finns dina redigeringar i fel avsnitt.

Lösning:

  1. Be agenten att "läsa in instruktioner igen" eller starta en ny chattsession för att framtvinga en omläsning.
  2. Kontrollera att dina redigeringar finns i rätt delar av filen:
    • Användarinställningar: För allmänna inställningar och begränsningar.
    • Viktiga beslut: För att registrera viktiga beslut som fattats under uppgraderingen.
    • Anpassade instruktioner: För specifika beteendemässiga åsidosättningar.
  3. Kontrollera att filen har sparats och att den ligger på den förväntade sökvägen: .github/upgrades/{scenarioId}/scenario-instructions.md.

Få hjälp

När något inte fungerar som förväntat:

  1. Fråga agenten: Fråga "Vad gick fel med den senaste uppgiften?" Agenten kan ofta förklara vad som hände och föreslå nästa steg.
  2. Granska körningsloggen: Öppna execution-log.md i .github/upgrades/{scenarioId}/. Loggen visar en kronologisk logg över vad agenten gjorde, inklusive eventuella fel som agenten stötte på.
  3. File an issue: Om du har hittat ett fel eller om agenten konsekvent misslyckas med något kan du skicka ett problem på @modernize-dotnet GitHub-lagringsplatsen.