WPF .NET との違い

この記事では、.NET と .NET Framework での Windows Presentation Foundation (WPF) の違いについて説明します。 .NET の WPF は、.NET Framework ソース コードの元の WPF からフォークされたオープンソース フレームワークです。

.NET Framework の機能のうち、.NET ではサポートされないものがいくつかあります。 サポートされないテクノロジの詳細については、「.NET で使用できない .NET Framework テクノロジ」を参照してください。

重要

.NET 7 と .NET 6 用のデスクトップ ガイド ドキュメントは作成中です。

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 に移行する] と進みます。

Upgrading to PackageReference.

計算された最上位の NuGet 依存関係を表示し、他のどの NuGet パッケージを最上位に昇格する必要があるかを尋ねるダイアログが表示されます。 [OK] を選択すると、packages.config ファイルがプロジェクトから削除され、<PackageReference> 要素がプロジェクト ファイルに追加されます。

プロジェクトで <PackageReference> を使用する場合、パッケージは Packages フォルダーにローカルに保存されず、グローバルに格納されます。 プロジェクト ファイルを開き、Packages フォルダーを参照していた <Analyzer> 要素をすべて削除します。 これらのアナライザーは、NuGet パッケージの参照に自動的に含まれます。

コード アクセス セキュリティ

コード アクセス セキュリティ (CAS) は .NET ではサポートされていません。 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

Note

移植での問題を最小限に抑えるために、次のプロパティに関連する情報を格納および取得するための機能は、XamlAccessLevel 型に保持されていました。

  • PrivateAccessToTypeName
  • AssemblyNameString