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 platformy .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. Niektóre biblioteki nie są. 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 Microsoft.Win32.Registry pakiet NuGet. 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 ciąg 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 Microsoft.Windows.Compatibility pakiecie NuGet. 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ą interfejsy API tylko dla systemu Windows, takie jak te związane z instrumentacją zarządzania Windows (WMI) i Dziennik zdarzeń systemu Windows. Aby uzyskać więcej informacji, zobacz Use the Windows Compatibility Pack to port code to .NET (Używanie pakietu zgodności systemu Windows do przenoszenia kodu na platformę .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 zamiennik nowoczesnej kontrolki przeglądarki internetowej.

App.config

Program .NET Framework używa pliku App.config do ładowania ustawień aplikacji, takich jak parametry połączenia s 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ć System.Configuration.ConfigurationManager pakiet NuGet do aplikacji, a kod skompiluje i użyje pliku App.config .

Mimo że appsettings.json jest nowoczesnym sposobem przechowywania i pobierania ustawień i parametry połączenia, aplikacja nadal ma kod, który używa pliku App.config. Po zmigrowaniu aplikacji pakiet NuGet został dodany do projektu, System.Configuration.ConfigurationManager aby kod korzystający z 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ż pliku App.config dla ustawień. Warto postępować zgodnie z ich kierunkiem, a także odejść od korzystania z pliku App.config.

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

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 odwołuje się do uaktualnionej aplikacji.

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

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

    1. Kliknij prawym przyciskiem myszy plik projektu w oknie Eksplorator rozwiązań i wybierz polecenie Dodaj>nowy element....
    2. W polu wyszukiwania wpisz json.
    3. Wybierz szablon Plik konfiguracji JSON języka JavaScript i ustaw wartość Nazwa na appsettings.json.
    4. Naciśnij przycisk Dodaj , aby dodać nowy plik do projektu.
  4. Ustaw plik appsettings.json, aby skopiować go do katalogu wyjściowego.

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

    • Akcja kompilacji: zawartość
    • Kopiuj do katalogu wyjściowego: zawsze kopiuj
  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 App.xaml.cs pliku do konfiguracji globalnej, a aplikacja Windows Forms używa metody uruchamiania Program.Main . 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 wystąpienie do tego elementu członkowskiego.

    Poniższy przykład tworzy element członkowski o nazwie Config, przypisuje mu wystąpienie w metodzie Main i ładuje parametry 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.

    Uwaga

    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 .