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

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

WPF/WinFormsアプリをマイグレーションして、ComponentOneを利用したモダナイゼーションを行う
 Windows FormsやWPFがサポートされた.NET Core 3が登場してからすでに半年以上経過し、昨年末には長期サポート版である.NET Core 3.1がGAとなりました。昨年実施されたMicrosoft主催の開発者イベントBuildでは、.NET Frameworkの最終バージョンが4.8であることも告...

 

 

以上。

 

あとは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と書かれていれば使用できます。

Windows Runtime API Reference - Windows UWP applications

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

 

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

パッケージ デスクトップ アプリで利用可能な UWP API (デスクトップ ブリッジ)
パッケージ デスクトップ アプリは、UWP アプリ&#...

 

コメント