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が対応していない、ということなのだろうと思います。
![キャプチャ3.PNG](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F252291%2Fcc07214b-3271-120d-e8c9-4119cd18f463.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4e5f71d3d7b86a0251c77d86c00fd338)
#現象
新しい環境でビルドするとこんなエラーがでます。
- 参照設定が全然効いてないですね。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F252291%2F8feff503-9c54-c51b-725a-4d74e24f833a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=69a76df4cfae526be38169f3066bc80b)
#対応
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の種類とか、バージョンによってこの限りではないと思わるので、今回はこれでできたという程度だと思います。