2020/2/1追記
Windows 10 WinRT API Packがリリースされました。
正式な方法としては、こちらを利用することをお勧めします。
- Windows 10 WinRT API PackはNuGetパッケージ
Microsoft.Windows.SDK.Contracts
として公開されています。 - 開発プロジェクトを
PackageReference
対応へ設定変更し、NuGetパッケージを追加するだけで利用可能。
詳細
#はじめに
VisualStudioでユニバーサルWindowsプラットフォームアプリってありますよね、最近。UWPっていうもの。
これにどうしてもなじめなくて今までのデスクトップ(.net)アプリにしていたのですが、UWP専用のAPIとかあって、そのAPIだけは使いたい場合があります。
そんなとき、UwpDesktopっていうアドオンを使うとデスクトップアプリからでも簡単にUWPのAPIが使えるので愛用していました。
のですが、開発環境を更新したら突然ビルドエラーが多発するようになってしまって、泣・・・
色々調べてどうにかビルドできるようになったのでメモ
#環境
##もとの開発環境
- OS=Windows10 1709
- 開発環境=Visual Studio Pro 2015
- C#
- .Net Framework 4.6.2
- WPFアプリケーション(.net)
- UwpDesktopのバージョン=10.0.14393.3
##新しい開発環境
-
OS=Windows10 1903
-
開発環境=Visual Studio Pro 2019(16.3.1)
- C#
- .Net Framework 4.6
- WPFアプリケーション(.net)
-
UwpDesktopのバージョン=10.0.17763.0
-
Visual Studioインストーラで、個別コンポーネントで
Windows10 SDK(10.0.17763.0)
を追加します。 -
たぶん↑のバージョンにUwpDesktopが対応していない、ということなのだろうと思います。
#現象
新しい環境でビルドするとこんなエラーがでます。
- 参照設定が全然効いてないですね。
#対応
uwp-desktopのGitHubサイトを見てみます。
なにやら英語で書いてあり、いろいろ試した結果、以下の手順でビルドが通るようになりました。
1.UwpDesktopをアンインストールする
2.参照設定で以下の二つを追加する
-
C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17763.0\Windows.winmd
-
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\ .NETCore\v4.5\System.Runtime.WindowsRuntime.dll
-
同じ名前のファイルがアチコチにあるので、パスを間違えないように。
-
UwpDesktopだと大量に参照が追加されるので、使っているAPIによってはこの要領でさらに参照追加が必要そう。
#最後に
よく調べれば特に難しいことないかと思いますが、最近ボタン一つでなんでもできるようになったので、こんなことでもハマってしまいます。
使っているAPIの種類とか、バージョンによってこの限りではないと思わるので、今回はこれでできたという程度だと思います。