Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du uppgraderar en Windows Forms skrivbordsapp till .NET med hjälp av GitHub Copilot moderniseringsagent. Agenten körs i din redigerare, analyserar projektet och driver ett arbetsflöde i tre steg: bedömning, planering och genomförande.
Exemplet använder exemplet Matchningsspel, en liten .NET Framework Windows Forms app som består av ett huvudprojekt och ett klassbibliotek.
Förutsättningar
- Windows operativsystem.
- Visual Studio 2026.
- Ladda ned och extrahera demoappen som används med den här artikeln.
- .NET SDK för den version som du riktar in dig på. Den här artikeln riktar sig till .NET 10.
- En Git-lagringsplats för lösningen. Agenten genomför förloppet, så projektet måste vara under källkontroll.
- GitHub Copilot-modernisering är aktiverad för Visual Studio. Mer information finns i Installera modernisering med GitHub Copilot.
Tip
Se till att ha en säkerhetskopia av koden, till exempel i källkontrollen eller en kopia, innan du börjar.
Öppna lösningen
Projekten Matching Game riktar sig mot .NET Framework 4.5. Visual Studio uppmanar dig att ändra målramverk för projekten till en version av .NET Framework som stöds när du öppnar lösningen.
- Öppna lösningen MatchingGame i Visual Studio.
- Visual Studio visar dialogrutan Målramverk inte installerat.
- Välj Uppdatera målet till .NET Framework 4.8 (rekommenderas) och välj sedan Fortsätt.
- Öppna fönstret Git-ändringar och checka in ändringarna.
Viktiga anteckningar för Visual Basic
GitHub Copilot moderniseringsagenten stöder inte helt Visual Basic .NET projekt. Agenten innehåller skyddsräcken som är särskilt utformade för att säkerställa att C#-projekt uppgraderas på ett tillförlitligt sätt, och dessa skyddsräcken stör VB-projektanalys och -körning. Om din lösning innehåller VB-projekt använder du något av följande alternativ i stället:
- GitHub Copilot (standardagent): Använd den vanliga Copilot-agent – utan moderniseringsagenten – för att vägleda uppgraderingen interaktivt.
- Uppgraderingsassistent: Ett dedikerat migreringsverktyg med VB-stöd.
Tip
Om din lösning innehåller både C#- och VB-projekt kan du fortfarande använda moderniseringsagenten för C#-projekten. Uppgradera VB-projekten separat med något av de angivna alternativen.
Om du använder standard-Copilot-agent eller uppgraderar manuellt följer du dessa steg:
Om projektet riktar in sig på en version av .NET Framework som inte stöds, omdirigerar du den till .NET Framework 4.8 först. Visual Studio uppmanar dig att göra detta när du öppnar lösningen, eller så kan du ändra den i projektegenskaperna.
Uppdatera inaktuella NuGet-paket till de senaste kompatibla versionerna.
Skapa ett nytt VB-Windows Forms projekt med hjälp av en Visual Studio mall eller
dotnet new winforms -lang vb. Mallen skapar en projektfil i SDK-stil och inställningar som har ändrats från .NET Framework.Kopiera källfilerna
.vbfrån den gamla projektmappen till den nya projektmappen.Kopiera filer som inte är kodfiler som projektet är beroende av, till exempel
app.configfiler.settings, bilder, ikoner och andra inbäddade resurser.Öppna den gamla projektfilen (eller
packages.config) och anteckna alla NuGet-paketreferenser. Lägg till samma paket i det nya projektet med hjälp av NuGet Správca balíkov ellerdotnet add package <name>.Om projektet refererar till andra projekt i lösningen lägger du till referenserna igen i det nya projektet.
Försök att skapa lösningen. Åtgärda inte fel ännu – byggutdata ger Copilot en konkret lista över problem att arbeta från.
Checka in det aktuella läget i versionshanteringen så att du har en ren utgångspunkt innan Copilot gör ändringar.
Öppna GitHub Copilot Chat och be den att lösa de återstående problemen. Ett exempel:
Det här Visual Basic Windows Forms projektet migrerades från .NET Framework 4.8 till .NET 10. Projektfilen och källfilerna finns på plats, men lösningen kompileras inte. Granska byggfelen och åtgärda API-inkompatibiliteter, saknade referenser och eventuella problem med konfigurationsmigrering.
Granska ändringarna Copilot föreslår och bygg sedan om och testa projektet.
Initiera uppgraderingen
Matchningsspelslösningen innehåller matchningsspelappen och klassbiblioteket MatchingGame.Logic . Agenten räknar ut projektdiagrammet på egen hand, så starta uppgraderingen på lösningsnivå.
I Prieskumník riešení högerklickar du på lösningen och väljer Modernisera.
GitHub-Copilot Chat-fönstret öppnas och startar en konversation med moderniseringsagenten.
Välj en modell med starka funktioner för resonemang och kodning.
Berätta för agenten vad du vill göra. Ett exempel:
Uppgradera allt till .NET 10.
Agenten rapporterar det aktuella tillståndet för kodbasen och vad den planerar att göra:
- Target Framework: Anger att agenten uppgraderar projekten till .NET 10.
- Flödesläge: Standardinställningen är Automatisk. För komplexa appar ber du agenten att växla till guidat läge.
- Källkontroll: Anger att agenten skapar en ny arbetsgren.
Agenten skriver sina ändringar i
.github/upgrades/scenarios/dotnet-version-upgrade/i ditt repo. Om mappen redan finns från ett tidigare försök frågar agenten om den ska fortsätta eller börja om på nytt.Be agenten
startatt påbörja uppgraderingsprocessen.
Granska utvärderingen
I utvärderingssteget undersöker agenten projektstrukturen, beroenden och kodmönster för att identifiera vad som behöver ändras. Det skriver resultatet till assessment.md i .github/upgrades/scenarios/dotnet-version-upgrade/.
När Copilot har slutfört utvärderingen granskar du konversationsutdata. Det börjar vanligtvis med något som liknar följande:
Assessment Complete
I've analyzed the solution and created a full assessment — see .github/upgrades/scenarios/dotnet-version-upgrade/assessment.md.
Solution summary:
• Target: net48 → net10.0
• Projects: 2
• MatchingGame.Logic (Class Library)
• MatchingGame (Windows Forms)
• Issues: 883 (673 mandatory, 210 potential)
• Affected Technologies: Windows Forms (666), GDI+ / System.Drawing (208), Legacy Configuration System (2)
Key concerns:
• Both projects are legacy-format .csproj files — need conversion to SDK-style
• MatchingGame.csproj has API incompatibilities (binary + source) and an incompatible NuGet package
• WinForms remains supported on .NET 10 (Windows-only TFM)
• No reported security vulnerabilities
Uppdelning av utvärderingen
Copilot öppnar .github/upgrades/scenarios/dotnet-version-upgrade/assessment.md filen i redigeraren för Visual Studio. Rulla ned till avsnittet MatchingGame\MatchingGame.csproj för att se en tabell med problem:
Teknologi Issues Procentsats Migreringsväg Äldre konfigurationssystem 2 0.2% Äldre XML-baserat konfigurationssystem (app.config/web.config) som har ersatts av en mer flexibel konfigurationsmodell i .NET Core. Det gamla systemet var stelt och XML-baserat. Migrera till Microsoft. Extensions.Configuration med JSON/miljövariabler; använd System.Configuration.ConfigurationManager NuGet-paketet som interimbrygga om det behövs. GDI+ / System.Drawing 208 23,7% System.Drawing API:er för 2D-grafik, avbildning och utskrift som är tillgängliga via NuGet-paketet System.Drawing.Common. Obs! Rekommenderas inte för serverscenarier på grund av Windows beroenden. Överväg plattformsoberoende alternativ som SkiaSharp eller ImageSharp för ny kod. Windows Forms 621 76,0% Windows Forms API:er för att skapa Windows skrivbordsprogram med traditionella formulärbaserade användargränssnitt som är tillgängliga i .NET på Windows. Aktivera stöd för Windows Forms: Alternativ 1 (rekommenderas): Ange målramverket net10.0-windows; Alternativ 2: Lägg till <UseWindowsForms>true</UseWindowsForms>; Alternativ 3 (äldre): Använd Microsoft.NET.Sdk.WindowsDesktop SDK.
De flesta av dessa problem är inte verkliga problem. Titta på kolumnen "Migreringsväg" för raden GDI+ som listar 208 problem. Utvärderingen flaggar dessa API:er eftersom de är tillgängliga i .NET Framework men inte i .NET. Kolumnen förklarar korrigeringen: lägg till System.Drawing.Common NuGet-paketet för att återställa API:erna.
Den Windows Forms raden visar 621 API-problem av samma anledning. Windows Forms API:er är inte tillgängliga i .NET som standard, men du återställer dem genom att rikta in dig på ett Windows specifikt ramverk som net10.0-windows och inställning <UseWindowsForms>true</UseWindowsForms> i projektfilen.
Alternativ 3 föreslår ett felaktigt alternativ. Äldre versioner av .NET krävde att ett Windows Forms-projekt skulle vara specifikt inriktat på Microsoft.NET.Sdk.WindowsDesktop-SDK:t, men nu läggs referensen till automatiskt när <UseWindowsForms>true</UseWindowsForms> har angetts.
Tip
Om du vill veta mer om ett alternativ ber du Copilot om mer information och kontext.
Granska uppgraderingsalternativen
Efter utvärderingen presenterar agenten beslut om uppgraderingsstrategi och sparar dem till upgrade-options.md i .github/upgrades/scenarios/dotnet-version-upgrade/. I exemplet Matchande spel väljer agenten följande alternativ:
| Aspect | Beslut | Förnuft |
|---|---|---|
| Uppgraderingsstrategi | Nedifrån och upp. | Agenten uppgraderar MatchingGame.Logic först eftersom MatchingGame är beroende av det och validerar sedan varje nivå innan du går vidare. |
| Projektmetod | På plats. | Båda projekten migreras tillsammans eftersom inga andra .NET Framework-projekt använder dem. |
| Paket som inte stöds | Lös direkt i raden. | Bedömningen visade att bara ett fåtal paket var inkompatibla, så agenten undersöker ersättningar under arbetets gång. |
| API-hantering som inte stöds | Korrigera på plats. | De flesta Windows Forms- och GDI+ API-ändringar för .NET är mekaniska och kräver inte ett separat planeringspass. |
| Windows interna API:er | Windows-kompatibilitetspaket | Appen använder Windows Forms och GDI+ i stor utsträckning och är i grunden endast för Windows. |
| Referenstyper som kan ogiltigförklaras | Lämna inaktiverat. | Agenten behandlar aktivering av nullable som ett separat arbete efter migreringen. |
Agenten påpekar också risker som behöver din uppmärksamhet. I exemplet Matchande spel flaggar agenten paketen MetroFramework eftersom de bara är tillgängliga för .NET Framework. Det troliga resultatet är att ta bort MetroFramework och återgå till standardkontroller för Windows Forms, vilket ändrar appens visuella format.
Granska de föreslagna alternativen och berätta för agenten vad du vill ändra. Säg till exempel till agenten att aktivera nullbara referenstyper eller att pausa och diskutera MetroFramework ersättningar först. När du är klar svarar du med confirm för att bekräfta valen och gå vidare till planeringen.
Granska planen
I planeringsfasen konverterar agenten utvärderingen och dina bekräftade alternativ till en detaljerad specifikation. Den skriver resultatet till plan.md och skapar en scenario-instructions.md fil som lagrar inställningar, beslut och anpassade instruktioner för uppgraderingen.
Important
Om flödesläget är Automatiskt börjar agenten köra planen utan tid att granska.
Planen omfattar sådant som uppgraderingsordningen för olika projekt, målramverksbeteckningen för varje projekt (net10.0-windows för Windows Forms-projekt), uppdateringsvägar för paket och riskbegränsande åtgärder för de brytande ändringar som bedömningen identifierade.
Så här granskar och anpassar du planen:
- Öppna
plan.mdi.github/upgrades/scenarios/dotnet-version-upgrade/. - Granska uppgraderingsstrategierna och beroendeuppdateringarna.
- Redigera planen för att justera steg eller lägga till kontext efter behov.
- Be agenten att gå till exekveringssteget.
Caution
Planen är beroende av projektinterdependenser. Uppgraderingen lyckas inte om du ändrar planen så att uppgraderingsprocessen inte kan fullbordas. Om MatchingGame till exempel är beroende av MatchingGame.Logic och du tar bort MatchingGame.Logic från planen kan uppgraderingen av MatchingGame misslyckas.
Kör uppgraderingen
I exekveringsfasen delar agenten upp planen i konkreta, efterföljande uppgifter med valideringskriterier. Agenten skriver uppgiftslistan i .github/upgrades/scenarios/dotnet-version-upgrade/tasks.md och spårar de övergripande framstegen i den filen. För varje uppgift skapar agenten en mapp under .github/upgrades/scenarios/dotnet-version-upgrade/tasks/ som innehåller en Markdown-fil som beskriver uppgiften och en markdown-fil som rapporterar aktivitetens förlopp.
I exemplet Matchande spel innehåller uppgiftslistan vanligtvis uppgradering av MatchingGame.Logic först, sedan MatchingGame, återställning av paket, skapande av lösningen och incheckning av ändringarna.
Så här kör du uppgraderingen:
- Be agenten att starta uppgraderingen.
- Övervaka förloppet genom att granska
tasks.mdnär agenten uppdaterar uppgiftsstatusen. Öppna mapparna per aktivitet undertasks/för aktivitetsbeskrivningen och en detaljerad förloppsrapport. - Om agenten stöter på ett problem som den inte kan lösa ger du den begärda hjälpen. Agenten kan till exempel be dig välja mellan två ersättnings-API:er eller bekräfta om du vill behålla ett inaktuellt paket.
- Baserat på dina svar anpassar agenten sin strategi till de återstående uppgifterna och fortsätter.
Agenten genomför ändringar enligt den Git-strategi som du konfigurerade under förinitieringen: per aktivitet, per grupp med uppgifter eller i slutet.
Anteckningar för Visual Basic projekt
Visual Basic Windows Forms-projekt i .NET Framework använder ofta inställningsfiler och filtillägg som System.Configuration, till exempel My och My.Computer. Tilläggen My togs bort i .NET. Agenten flaggar dessa mönster under utvärderingen och föreslår korrigeringar under körningen, men du kan behöva bekräfta enskilda ändringar under en guidad körning.
Om agenten migrerar projektet men det inte går att kompilera, kontrollerar du att projektfilen har Windows som målplattform och refererar till Windows Forms. Elementet <PropertyGroup> bör se ut som följande kodfragment:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<OutputType>WinExe</OutputType>
<MyType>WindowsForms</MyType>
<!-- Other settings removed for brevity. -->
</PropertyGroup>
</Project>
Verifiera uppgraderingen
När uppgraderingen är klar rekommenderar agenten nästa steg i chattsvaret. Uppmana agenten att generera en omfattande ändringsrapport med "Generera en ändringsrapport".
Granska den slutliga uppgiftsstatusen i tasks.md och bekräfta att varje steg är klart.
Så här verifierar du uppgraderingen:
Skapa lösningen och åtgärda eventuella kompileringsfel.
Kör appen och bekräfta att formulär läses in och fungerar som förväntat.
Standardteckensnittet i Windows Forms ändrats mellan .NET Framework och .NET, så kontrollera formulär och anpassade kontroller för layoutskillnader.
Kör eventuella enhetstester i lösningen och åtgärda fel.
Bekräfta att uppdaterade NuGet-paket är kompatibla med din app.
Testa appen noggrant för att kontrollera att uppgraderingen lyckades.
Tip
Om projektet inte körs och det inte går att ansluta ett felsökningsprogram kan du prova att starta om Visual Studio. Om du migrerar projektfiler från .NET Framework till .NET kan det förvirra Windows Forms designern utan omstart.
Det Windows Forms matchande spelexemplet uppgraderas nu till .NET 10.
Upplevelse efter uppgraderingen
Om du porterade appen från .NET Framework till .NET läser du Modernisera efter uppgradering till .NET från .NET Framework för att få idéer om hur du använder nyare mönster, till exempel appsettings.json konfiguration, beroendeinmatning eller molntjänster. Att använda dessa mönster är separat från uppgradering till .NET och krävs inte för att slutföra uppgraderingen.
Relaterat innehåll
.NET Desktop feedback