WPF .NET 的差異

本文說明 .NET 和 .NET Framework 上的 Windows Presentation Foundation (WPF) 之間的差異。 WPF for .NET 是從原始 WPF for .NET Framework 原始程式碼分支而來的開放原始碼架構

.NET Framework 有 .NET 不支援的一些功能。 如需不受支援的技術詳細資訊,請參閱 .NET 上無法使用的 .NET Framework 技術

SDK 樣式專案

.NET 使用 SDK 樣式的專案檔。 這些專案檔與 Visual Studio 所管理的傳統 .NET Framework 專案檔不同。 若要將 .NET Framework WPF 應用程式移轉至 .NET,您必須轉換專案。 如需詳細資訊,請參閱如何將 WPF 傳統型應用程式升級至 .NET 7

NuGet 套件參考

如果您的 .NET Framework 應用程式在 packages.config 檔案中列出其 NuGet 相依性,請移轉至 <PackageReference> 格式:

  1. 在 Visual Studio 中,開啟 [方案總管] 窗格。
  2. 在 WPF 專案中,以滑鼠右鍵按一下 packages.config>[將 packages.config 移轉至 PackageReference]

Visual Studio 中 [方案總管] 的快顯功能表,其顯示 [移轉 packages.config] 項目。

對話方塊將會出現,其中顯示導出的最上層 NuGet 相依性,並詢問應該將哪些其他 NuGet 套件升級至最上層。 選取 [確定]packages.config 檔案將會從專案中移除,而 <PackageReference> 元素會新增至專案檔。

當您的專案使用 <PackageReference> 時,套件不會儲存在本機的 Packages 資料夾中,它們會全域儲存。 開啟專案檔,並移除參考 Packages 資料夾的任何 <Analyzer> 元素。 這些分析器會自動包含在 NuGet 套件參考中。

程式碼存取安全性

.NET 不支援程式碼存取安全性 (CAS)。 所有 CAS 相關功能都會在完全信任的假設下處理。 適用於 .NET 的 WPF 會移除 CAS 相關程式碼。 這些類型的公用 API 介面仍然存在,以確保對這些類型的呼叫成功。

公開定義的 CAS 相關類型已移出 WPF 組件,並移入 Core .NET 程式庫組件。 WPF 組件已將類型轉送設定為已移動類型的新位置。

來源組件 目標組件 類型
WindowsBase.dll System.Security.Permissions.dll MediaPermission
MediaPermissionAttribute
MediaPermissionAudio
MediaPermissionImage
MediaPermissionVideo
WebBrowserPermission
WebBrowserPermissionAttribute
WebBrowserPermissionLevel
System.Xaml.dll System.Security.Permissions.dll XamlLoadPermission
System.Xaml.dll System.Windows.Extension.dll XamlAccessLevel

注意

為了將移植摩擦降到最低,用於儲存和擷取下列屬性相關資訊的功能會保留在 XamlAccessLevel 類型中。

  • PrivateAccessToTypeName
  • AssemblyNameString