[メモ、途中]winformsアプリケーションでUWPのAPIを使用する

Page content

winformsアプリケーションでUWPのAPIを使用する方法の覚書(WPFアプリケーションでも使用できるらしいです)。

開発環境、言語

WIndows10 Home 1903 Visual Studio 2019、VB.NET(導入まではC#も同様のはず)

導入方法

1.プロジェクトを作成

Windows formsアプリケーション(VB.NET or C#)を指定。

2.NuGetからMicrosoft.Windows.SDK.Contractsをインストール

インストールするバージョンはWindows10のバージョンに合わせましょう。普通にアップデートしていれば1903がインストールされていると思います(2020-03-06現在)。

  • 1903: 10.0.18362
  • 1809: 10.0.17763
  • 1803: 10.0.17134

3.packages.configをPackageReferenceに移行

Microsoft.Windows.SDK.Contractsをインストールして直ぐにビルドしようとすると、「Must use PackageReference」というエラーが発生します。

ソリューションエクスプローラ内に存在するpackage.configを右クリックし、「packages.configをPackageReferenceに移行する」を選択してください(プロジェクト名は気にしないで)。

依存関係に関するダイアログが表示されます。問題が見つかっていないことを確認してOKしてください。詳細やロールバックについては以下ページに詳細が書かれてあります。
https://docs.microsoft.com/ja-jp/nuget/consume-packages/migrate-packages-config-to-package-reference

以上。

あとはMicrosoftのドキュメントとにらめっこしながらコーディングするのみです(現在ここで苦しみ中)。

公式ブログに緯度/経度を取得するサンプルコードがあります。 https://blogs.windows.com/windowsdeveloper/2019/09/30/windows-10-winrt-api-packs-released/

使用可能なAPI

使用可能なAPIは2通りあります。

1.パッケージIDを持たないアプリケーションの場合は、以下ページから使用したいAPIを検索し、ClassやInterfaceのAttributeにDualApiPartitionAttributeと書かれていれば使用できます。

https://docs.microsoft.com/en-us/uwp/api/

例)画面キャプチャに関するAPI「Windows.Graphics.Capture」のクラスの一つ、「Direct3D11CaptureFrame」クラスの場合。

2.パッケージIDを持つアプリケーションの場合は↑に加え、以下ページ中程の一覧にあるAPIが使用できます。

https://docs.microsoft.com/ja-jp/windows/apps/desktop/modernize/desktop-to-uwp-supported-api