マネージ デスクトップ アプリと UWP

Windows ストア アプリの時は、「マネージ デスクトップ アプリと Windows ランタイム」というドキュメントがありました。Windows 10 の UWP アプリのランタイムをデスクトップから使う方法がないかと調べたので、その使い方を簡単にまとめます。

  • WPF アプリなどのプロジェクトを Visual Studio 2015 で作成します。
  • ソリューション エクスプローラで、プロジェクトをアンロードします。
  • アンロードしたプロジェクトのコンテキスト メニューより、コードの編集を行います。
   <PropertyGroup>
    <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>
  </PropertyGroup>

上記のコードをプロジェクト ファイルへ追加して、上書き保存します。

  • プロジェクトの再読み込みを行います。
  • 参照の追加を行います。
    C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd

    C:\Program Files (x86)\Microsoft SDKs\NETCoreSDK\System.Runtime.WindowsRuntime\4.0.10\lib\netcore50\System.Runtime.WindowsRuntime.dll
    の2つへ参照を設定します。
  • 後は、必要なクラスを使用するだけです。

Windows.winmd は、Windows Runtime の参照用のメタデータになります。

System.Runtime.WindowsRuntime.dll が、Microsoft SDKs\NETCoreSDK になっている理由は、UWP アプリが .NET Core がランタイムになっているためです。Windows 8.1 までは、.NET Framework のサブセットという位置づけでしたので、C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore より適切なアセンブリへ参照を設定していましたが、ランタイムが .NET Core になったため UWP 用の .NET Core SDK で提供されるアセンブリへと参照を切り替えるようになりました。