共用方式為


升級自 .NET Framework 至 .NET 之後,進行現代化轉型

在本文中,您將瞭解從 .NET Framework 升級至 .NET 之後,將應用程式現代化的不同方式。 使用 .NET Upgrade Assistant 工具來將您的應用程式升級至 .NET。

遺漏的 API

升級 .NET Framework 應用程式時,您很可能會有一些不相容之處。 這是因為 .NET Framework 是僅限 Windows 的技術,而 .NET 是跨平台技術。 有些圖書館不是這樣。 例如,.NET 不像 .NET Framework 那樣提供開箱即用的 API 來存取 Windows 登錄。 Microsoft.Win32.Registry NuGet 套件會提供 Windows 登錄的支援。 許多 .NET Framework 專用的程式庫已被移植到 .NET 或 .NET Standard,並發佈在 NuGet 上。 如果您在專案中找到遺漏的參考,請搜尋 NuGet。

Windows 相容性套件

如果在移轉之後,您對您新版本的 .NET 所不支援的 .NET Framework API 仍有一些相依性,您可能會在 Microsoft.Windows.Compatibility NuGet 套件中找到它們。 它會將大約 20,000 個 API 新增至您的 .NET 專案,大幅增加您專案可用的 API 集合。 這些 API 包括僅限 Windows API,例如與 Windows Management Instrumentation (WMI) 和 Windows EventLog 相關的 API。 如需詳細資訊,請參閱 使用 Windows 相容性套件將程式代碼移植到 .NET

網頁瀏覽器控制件

以 Windows 桌面技術為目標的專案,例如 Windows Presentation Foundation 或 Windows Forms,可能包含網頁瀏覽器控件。 提供的網頁瀏覽器控制器很可能在 HTML5 和其他新式 Web 技術之前設計,而且被視為過時。 Microsoft將 Microsoft.Web.WebView2 NuGet 套件發佈為新式網頁瀏覽器控制項的取代品

App.config

.NET Framework 會使用 App.config 檔案來載入應用程式的設定,例如連接字串和記錄提供者組態。 新式 .NET 會針對應用程式設定使用 appsettings.json 檔案。 升級小幫手的 CLI 版本會處理將 App.config 檔案轉換成 appsettings.json,但 Visual Studio 擴充功能則不會。

提示

如果您不想使用 appsettings.json 檔案,您可以將 System.Configuration.ConfigurationManager NuGet 套件新增至您的應用程式,而您的程式代碼將會編譯並使用 App.config 檔案。

雖然 appsettings.json 是儲存和擷取設定和連接字串的新式方式,但您的應用程式仍具有使用 App.config 檔案的程序代碼。 移轉應用程式時,會將 System.Configuration.ConfigurationManager NuGet 套件新增至專案,讓使用 App.config 檔案的程式代碼繼續編譯。

當連結庫升級至 .NET 時,它們會藉由支援 appsettings.json 而不是 App.config來現代化。例如,已針對 .NET 6+ 升級的 .NET Framework 中的記錄提供者不再針對設定使用 App.config。 最好遵循他們的指引,並且避免使用 App.config

Microsoft.Extensions.Configuration NuGet 套件提供 appsettings.json 支援。

執行下列步驟,以使用 appsettings.json 檔案作為您的組態提供者:

  1. 請移除 System.Configuration.ConfigurationManager NuGet 套件或程式庫,如果它已被您的升級應用程式引用。

  2. 新增 Microsoft.Extensions.Configuration.Json NuGet 套件。

  3. 建立名為 appsettings.json的檔案。

    1. 以滑鼠右鍵按兩下 [方案總管] 中的項目檔,然後選取 [[新增>新專案]
    2. 在搜尋方塊中,輸入 json
    3. 選取 JavaScript JSON 組態檔 樣本,並將 名稱 設定為 appsettings.json
    4. [新增],將新檔案新增至專案。
  4. appsettings.json 檔案設定為複製到輸出目錄。

    在 [方案總管] 中,尋找 appsettings.json 檔案,並設定下列 屬性

    • 建置動作: 內容
    • 複製到輸出目錄:一律複製
  5. 在應用程式的啟動程式代碼中,您需要載入設定檔。

    應用程式的啟動程式代碼會根據您的項目類型而有所不同。 例如,WPF 應用程式會使用 App.xaml.cs 檔案進行全域設定,而 Windows Forms 應用程式會使用 Program.Main 方法來啟動。 不管怎樣,您都需要在啟動時執行兩件事:

    • 建立可從應用程式的任何位置存取的 internal static (在 Visual Basic 中為Friend Shared) 成員。
    • 在啟動期間,將實例指派給該成員。

    下列範例會建立名為 Config的成員,並在 Main 方法中指派實例,並載入連接字串:

    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. 更新其餘的程序代碼,以使用新的組態 API。

  7. 從項目刪除 App.config 檔案。

    謹慎

    確保您的應用程式在沒有 App.config 檔案的情況下能正常運行。 透過版本控制或將檔案複製到其他位置來備份 App.config 檔案。 在您徹底測試應用程式之後,請刪除 App.config 檔案。