次の方法で共有


WPF .NET との違い

この記事では、.NET 上の Windows Presentation Foundation (WPF) と .NET Framework の違いについて説明します。 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 アプリの NuGet 依存関係が packages.config ファイルに一覧表示されている場合は、<PackageReference> 形式に移行します。

  1. Visual Studio で、ソリューション エクスプローラーの ウィンドウを開きます。
  2. WPF プロジェクトで、packages.config>を右クリックし、packages.config を PackageReferenceに移行します。

Visual Studio で、ソリューション エクスプローラーのコンテキスト メニューを表示して 、『packages.configを移行』という項目を表示します。

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

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

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

.NET では、コード アクセス セキュリティ (CAS) はサポートされていません。 CAS 関連のすべての機能は、完全信頼を前提として扱われます。 WPF for .NET では、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