從 .NET Framework 升級至 .NET 之後進行現代化
在本文中,您將瞭解如何透過不同的方式,將已從 .NET Framework 升級至 .NET 的應用程式加以現代化。 使用 .NET 升級小幫手工具,將您的應用程式升級至 .NET。
缺少 API
升級 .NET Framework 應用程式時,很可能會有一些不相容的地方。 這是因為 .NET Framework 是僅適用於 Windows 的技術,而 .NET 是跨平台技術, 而某些程式庫並非如此。 例如,.NET 不提供現用的 API 來存取 Windows 登錄,和 .NET Framework 不同。 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
Web 瀏覽器控制項
以 Windows 桌上型電腦技術為目標的專案 (例如 Windows Presentation Foundation 或 Windows Forms) 可能包含網頁瀏覽器控制項。 提供的 Web 瀏覽器控制器很有可能是在 HTML5 和其他新式 Web 技術之前所設計,因此已過時。 Microsoft 會將 Microsoft.Web.WebView2
NuGet 套件 發佈為新式 Web 瀏覽器控制項替換項目。
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 檔案作為您的組態提供者:
請移除
System.Configuration.ConfigurationManager
NuGet 套件或程式庫 (如果您升級的應用程式已參考的話)。新增
Microsoft.Extensions.Configuration.Json
NuGet 套件。建立名為 appsettings.json 的檔案。
- 在 [方案總管] 視窗 中,以滑鼠右鍵按一下專案檔,然後依序選取 [新增]>[新項目...]。
- 在搜尋方塊中輸入
json
。 - 選取 [JavaScript JSON 組態檔] 範本,並將 [名稱] 設定為 [appsettings.json]。
- 按下 [新增] 以將檔案新增至專案。
設定要複製到輸出目錄的 appsettings.json 檔案。
在 [方案總管] 視窗中,尋找 [appsettings.json] 檔案並設定下列 [屬性]:
- 建置動作:內容
- 複製到輸出目錄:一律複製
在應用程式的啟動程式代碼中,您需要載入設定檔。
應用程式的啟動程式代碼會根據您的專案類型而有所不同。 例如,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
- 建立可從應用程式的任何位置存取的
更新其餘的程序代碼,以使用新的組態 API。
從專案中刪除 App.config 檔案。
警告
請確定您的應用程式在沒有 App.config 檔案的情況下可正確執行。 透過原始檔控制或複製其他地方的檔案,備份 App.config 檔案。 在您徹底測試應用程式之後,請刪除 App.config 檔案。