Udostępnij za pośrednictwem


Modernizuj po uaktualnieniu do platformy .NET z programu .NET Framework

W tym artykule dowiesz się więcej o różnych sposobach modernizacji aplikacji po uaktualnieniu jej z programu .NET Framework do platformy .NET. Użyj narzędzia .NET Upgrade Assistant, aby uaktualnić aplikację do .NET.

Brakujące interfejsy API

Podczas uaktualniania aplikacji .NET Framework najprawdopodobniej będziesz mieć pewne niezgodności. Dzieje się tak, ponieważ platforma .NET Framework jest technologią tylko dla systemu Windows, a platforma .NET to technologia międzyplatformowa. Nie wszystkie biblioteki działają. Na przykład platforma .NET nie udostępnia wbudowanych interfejsów API w celu uzyskania dostępu do rejestru systemu Windows, takiego jak .NET Framework. Obsługa rejestru systemu Windows jest zapewniana przez pakiet NuGet Microsoft.Win32.Registry. Wiele bibliotek specyficznych dla programu .NET Framework zostało portowanych do platformy .NET lub .NET Standard i są hostowane w programie NuGet. Jeśli znajdziesz brakujące odwołanie w projekcie, wyszukaj w NuGet.

Pakiet zgodności systemu Windows

Jeśli po migracji masz pewne zależności od interfejsów API programu .NET Framework, które nie są obsługiwane w nowej wersji platformy .NET, możesz je znaleźć w pakiecie NuGet Microsoft.Windows.Compatibility. Dodaje około 20 000 interfejsów API do projektu platformy .NET, co znacznie zwiększa zestaw interfejsów API dostępnych dla projektu. Te interfejsy API obejmują tylko te działające w systemie Windows, takie jak te związane z Windows Management Instrumentation (WMI) i dziennikiem zdarzeń systemu Windows. Aby uzyskać więcej informacji, zobacz Użyj Windows Compatibility Pack, aby przenieść kod do .NET.

Kontrolka przeglądarki internetowej

Projekty przeznaczone dla technologii klasycznej systemu Windows, takiej jak Windows Presentation Foundation lub Windows Forms, mogą zawierać kontrolkę przeglądarki internetowej. Dostarczona kontrolka przeglądarki internetowej została najprawdopodobniej zaprojektowana przed językiem HTML5 i innymi nowoczesnymi technologiami internetowymi i jest uważana za przestarzałą. Firma Microsoft publikuje Microsoft.Web.WebView2 pakiet NuGet jako nowoczesny zamiennik kontrolki przeglądarki internetowej.

App.config

Program .NET Framework używa pliku App.config do ładowania ustawień aplikacji, takich jak parametry połączenia i konfiguracja dostawcy dzienników. Nowoczesne platformy .NET używa pliku appsettings.json dla ustawień aplikacji. Wersja interfejsu wiersza polecenia Asystenta uaktualniania obsługuje konwertowanie plików App.config na appsettings.json, ale rozszerzenie programu Visual Studio nie.

Napiwek

Jeśli nie chcesz używać pliku appsettings.json, możesz dodać pakiet System.Configuration.ConfigurationManager NuGet do aplikacji, a kod skompiluje i użyje pliku App.config.

Mimo że appsettings.json jest nowoczesnym sposobem przechowywania i pobierania ustawień i parametrów połączenia, aplikacja nadal ma kod, który używa pliku App.config. Po zmigrowaniu aplikacji pakiet NuGet System.Configuration.ConfigurationManager został dodany do projektu, aby kod używający pliku App.config był nadal kompilowany.

W miarę uaktualniania bibliotek do platformy .NET modernizują się, obsługując appsettings.json zamiast App.config. Na przykład dostawcy rejestrowania w programie .NET Framework uaktualnionym dla platformy .NET 6+ nie używają już App.config dla ustawień. Dobrze jest stosować się do ich wskazówek, a także odejść od używania App.config.

Obsługa appsettings.json jest zapewniana przez pakiet NuGet Microsoft.Extensions.Configuration.

Wykonaj następujące kroki, aby użyć pliku appsettings.json jako dostawcy konfiguracji:

  1. Usuń pakiet NuGet lub bibliotekę System.Configuration.ConfigurationManager, jeśli jest używany w zaktualizowanej aplikacji.

  2. Dodaj pakiet Microsoft.Extensions.Configuration.Json NuGet.

  3. Utwórz plik o nazwie appsettings.json.

    1. Kliknij prawym przyciskiem myszy plik projektu w eksploratorze rozwiązań i wybierz pozycję Dodaj nowy element>.
    2. W polu wyszukiwania wprowadź json.
    3. Wybierz szablon pliku konfiguracji JavaScript JSON i ustaw nazwę na appsettings.json.
    4. Naciśnij Dodaj, aby dodać nowy plik do projektu.
  4. Ustaw plik appsettings.json, aby skopiować go do katalogu wyjściowego.

    W Eksploratorze rozwiązań znajdź plik appsettings.json i ustaw następujące właściwości :

    • Działanie kompilacji: zawartość
    • kopiuj do folderu wyjściowego: Kopiuj zawsze
  5. W kodzie uruchamiania aplikacji należy załadować plik ustawień.

    Kod uruchamiania aplikacji różni się w zależności od typu projektu. Na przykład aplikacja WPF używa pliku App.xaml.cs do konfiguracji globalnej, a aplikacja Windows Forms używa metody Program.Main do uruchamiania. Niezależnie od tego, należy wykonać dwie czynności podczas uruchamiania:

    • Utwórz element członkowski internal static (Friend Shared w języku Visual Basic), do którego można uzyskać dostęp z dowolnego miejsca w aplikacji.
    • Podczas uruchamiania przypisz instancję do tego członka.

    Poniższy przykład tworzy członek o nazwie Config, przypisuje do niego wystąpienie w metodzie Main i ładuje łańcuch połączenia.

    using Microsoft.Extensions.Configuration;
    
    internal class Program
    {
        internal static IConfiguration Config { get; private set; }
    
        private static void Main(string[] args)
        {
            Config = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build();
    
            // Use the config file to get a connection string.
            string? myConnectionString = Config.GetConnectionString("database");
    
            // Run the rest of your app.
        }
    }
    
    Imports Microsoft.Extensions.Configuration
    
    Module Program
    
        Private _config As IConfiguration
    
        ' Shared not required since Program is a Module
        Friend Property Config As IConfiguration
    
            Get
                Return _config
            End Get
            Private Set(value As IConfiguration)
                _config = value
            End Set
    
        End Property
    
        Sub Main(args As String())
    
            Config = New ConfigurationBuilder() _
                .AddJsonFile("appsettings.json") _
                .Build()
    
            ' Use the config file to get a connection string
            Dim myConnectionString As String = Config.GetConnectionString("database")
    
            ' Run the rest of your app
        End Sub
    End Module
    
  6. Zaktualizuj pozostałą część kodu, aby używać nowych interfejsów API konfiguracji.

  7. Usuń plik App.config z projektu.

    Ostrożność

    Upewnij się, że aplikacja działa poprawnie bez pliku App.config. Utwórz kopię zapasową pliku App.config za pomocą kontroli źródła lub kopiując plik w innym miejscu. Po dokładnym przetestowaniu aplikacji usuń plik App.config.