Dela via


Använd den äldre .NET-uppgraderingsassistenten

I den här artikeln får du lära dig hur du installerar och kör den gamla versionen av cli-verktyget (.NET Upgrade Assistant command-line interface). Från och med version 0.5.2 gjordes kodbasen för CLI-verktyget .NET Upgrade Assistant på nytt baserat på Visual Studio-tillägget. Det innebär att det i praktiken finns två olika CLI-verktyg, versionen före 0.5.2 som kallas för den äldre versionen och 0.5.2+-versionen som är den aktuella versionen.

Den äldre versionen har vissa funktioner som ännu inte är tillgängliga i den nya versionen, till exempel analysera kommandon eller uppgraderingar på lösningsnivå, men som också saknar nya förbättringar i den nya versionen (0.5.2+). Därför kanske du vill använda den tills den aktuella versionen ökar i kapacitet och omfattning.

Dricks

Den äldre versionen av verktyget kan uppgradera lösningsfiler.

Installera den äldre versionen

Den äldre versionen av verktyget installeras på samma sätt som den aktuella versionen, förutom att du anger version 0.4.421302:

dotnet tool install upgrade-assistant -g --version 0.4.421302

Viktigt!

Installationen av det här verktyget kan misslyckas om du har konfigurerat ytterligare NuGet-feedkällor. Använd parametern --ignore-failed-sources för att behandla dessa fel som varningar i stället för fel:

dotnet tool install upgrade-assistant -g --ignore-failed-sources --version 0.4.421302

Analysera din app

Den äldre versionen av verktyget innehåller ett analysläge som utför en förenklad torrkörning av uppgradering av din app. Det kan ge insikter om vilka ändringar som kan krävas innan uppgraderingen startas. Öppna en terminal och navigera till mappen där målprojektet eller lösningen finns. upgrade-assistant analyze Kör kommandot och skicka namnet på projektet eller lösningen som du uppgraderar.

Här är till exempel utdata när du har kört analysläget med .NET Framework WPF-appen:

> upgrade-assistant analyze .\WebSiteRatings.sln

[15:39:00 INF] Loaded 9 extensions
[15:39:02 INF] Using MSBuild from C:\Program Files\dotnet\sdk\7.0.201\
[15:39:02 INF] Using Visual Studio install from C:\Program Files\Microsoft Visual Studio\2022\Preview [v17]
[15:39:05 INF] Writing output to C:\code\migration\AnalysisReport.sarif
[15:39:06 INF] Recommending Windows TFM net7.0-windows for project WebSiteRatings.csproj because the project either has Windows-specific dependencies or builds to a WinExe
[15:39:06 INF] Marking assembly reference System.Configuration for removal based on package mapping configuration System.Configuration
[15:39:06 INF] Adding package System.Configuration.ConfigurationManager based on package mapping configuration System.Configuration
[15:39:08 INF] Package EntityFramework, Version=6.2.0 does not support the target(s) net7.0-windows but a newer version (6.4.4) does.
[15:39:09 INF] Reference to .NET Upgrade Assistant analyzer package (Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers, version 0.4.410601) needs to be added
[15:39:10 INF] Adding Microsoft.Windows.Compatibility 7.0.0 helps with speeding up the upgrade process for Windows-based APIs
[15:39:13 INF] Recommending Windows TFM net7.0-windows for project StarVoteControl.csproj because the project either has Windows-specific dependencies or builds to a WinExe
[15:39:13 INF] Reference to .NET Upgrade Assistant analyzer package (Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers, version 0.4.410601) needs to be added
[15:39:13 INF] Adding Microsoft.Windows.Compatibility 7.0.0 helps with speeding up the upgrade process for Windows-based APIs
[15:39:13 INF] Running analyzers on WebSiteRatings
[15:39:14 INF] Identified 0 diagnostics in project WebSiteRatings
[15:39:14 INF] Running analyzers on StarVoteControl
[15:39:15 INF] Identified 0 diagnostics in project StarVoteControl
[15:39:15 INF] Analysis Complete, the report is available at C:\code\migration\AnalysisReport.sarif

Det finns en hel del intern diagnostikinformation i utdata, men viss information är användbar. Observera att analysläget anger att projektets målramverksmoniker (TFM) under en uppgradering kommer att anges till net7.0-windows i stället för net7.0. Den här rekommendationen görs eftersom de projekt som refereras till av lösningen är WPF-projekt, en teknik som endast är en Windows-teknik. Ett konsolprogram skulle förmodligen uppgraderas direkt till TFM net7.0, såvida det inte använde något Windows-specifikt bibliotek eller kod.

Kör uppgraderingsassistenten

Öppna en terminal och navigera till mappen där målprojektet eller lösningen finns. upgrade-assistant upgrade Kör kommandot och skicka namnet på projektet eller lösningen som du uppgraderar.

När verktyget körs visas en lista över steg som utförs för att uppgradera projektet. När varje steg har slutförts innehåller verktyget en uppsättning numrerade kommandon som gör det möjligt för användaren att tillämpa eller hoppa över nästa steg. Det kan ge andra alternativ, till exempel:

  • Få mer information om steget.
  • Ändra projekt.
  • Justera loggningsinställningarna.
  • Stoppa uppgraderingen och avsluta.

Om du trycker på Retur utan att välja ett tal markeras det första objektet i listan.

När varje steg initieras kan verktyget ge information om vad det tror kommer att hända om du använder steget.

Uppgradera en lösning

När du uppgraderar en lösning som innehåller flera projekt måste du välja vilket projekt i lösningen som är startpunkten. Baserat på startpunktsprojektet skapas ett beroendediagram för att avgöra vilka projekt som ska uppgraderas och i vilken ordning. Om lösningen innehåller projekt som inte ingår i beroendediagrammet ignoreras de och du måste uppgradera projekten separat. Beroenden uppgraderas först och sedan startpunktsprojektet .

Nästa steg är att välja vilket projekt som ska uppgraderas. Du bör se utdata som liknar följande kodfragment:

Upgrade Steps

1. [Next step] Select an entrypoint
2. Select project to upgrade

Choose a command:
   1. Apply next step (Select an entrypoint)
   2. Skip next step (Select an entrypoint)
   3. See more step details
   4. Configure logging
   5. Exit

Dricks

Var uppmärksam på utdata för varje steg eftersom det kan innehålla information om något som verktyget inte kan uppgradera. Beroende på appens komplexitet kan du ha mer uppgraderingsarbete att göra när verktyget är klart.

Uppgradera projektet

När ett projekt har valts visas en lista med uppgraderingssteg. Det första steget är valt, vilket är att säkerhetskopiera projektet. Listan med steg ser ut ungefär så här:

[15:50:50 INF] Initializing upgrade step Back up project

Upgrade Steps

Entrypoint: C:\code\migration\WebSiteRatings\WebSiteRatings.csproj
Current Project: C:\code\migration\WebSiteRatings\WebSiteRatings.csproj

1. [Next step] Back up project
2. Convert project file to SDK style
3. Clean up NuGet package references
    a. Duplicate reference analyzer
    b. Package map reference analyzer
    c. Target compatibility reference analyzer
    d. Upgrade assistant reference analyzer
    e. Windows Compatibility Pack Analyzer
    f. MyDotAnalyzer reference analyzer
    g. Newtonsoft.Json reference analyzer
    h. Windows App SDK package analysis
    i. Transitive reference analyzer
4. Update TFM
5. Update NuGet Packages
    a. Duplicate reference analyzer
    b. Package map reference analyzer
    c. Target compatibility reference analyzer
    d. Upgrade assistant reference analyzer
    e. Windows Compatibility Pack Analyzer
    f. MyDotAnalyzer reference analyzer
    g. Newtonsoft.Json reference analyzer
    h. Windows App SDK package analysis
    i. Transitive reference analyzer
6. Add template files
7. Update WCF service to CoreWCF (Preview)
8. Upgrade app config files
    a. Convert Application Settings
    b. Convert Connection Strings
    c. Disable unsupported configuration sections
9. Update source code
    a. Apply fix for UA0002: Types should be upgraded
    b. Apply fix for UA0012: 'UnsafeDeserialize()' does not exist
10. Move to next project

Choose a command:
   1. Apply next step (Back up project)
   2. Skip next step (Back up project)
   3. See more step details
   4. Select different project
   5. Configure logging
   6. Exit

Varje steg beskriver först vad det kommer att göra och uppmanar dig sedan att göra det. Alla steg som inte gäller hoppas över när verktyget kommer till steget. Om verktyget till exempel bearbetar 7. Uppdatera WCF-tjänsten till CoreWCF (förhandsversion) men din app definierar inte en WCF-tjänst, den hoppas över och steg 8 bearbetas. Om steg 8 i sin tur inte tillämpas hoppas det också över. Du kan se att många steg hoppas över när verktyget försöker hitta nästa steg som gäller.

De sista stegen

När du har uppgraderat dina projekt måste du kompilera och testa dem. Troligtvis finns det mer arbete att göra för att slutföra uppgraderingen. Det är möjligt att .NET Framework-versionen av din app innehöll biblioteksreferenser som projektet faktiskt inte använder, och de överfördes. Analysera varje referens och avgöra om den krävs eller inte. Verktyget kan också ha lagt till eller uppgraderat en NuGet-paketreferens till fel version.

Leta slutligen efter sätt att modernisera din app. Exempel finns i Moderniseringar efter uppgradering till .NET från .NET Framework