WPF ( .NET 5 ) でWindows Runtime API を呼ぶ、前にしなければいけないこと
2021/01/13時点でのお話です
2021/01/14追記
今回のブログの通りやっても使えません、翌日のブログ(以下のリンク)が正解
2021/01/14追記おわり
ここから先は試行錯誤中のログ的な感じで残しておきます
- Visual Studioを最新にしておくのは必須(たぶん)
- Windows は 20H2
プロジェクトファイルの編集
とりあえずこんな感じ
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net5.0-windows10.0.19041</TargetFramework> <UseWPF>true</UseWPF> </PropertyGroup> </Project>
.NET 5と対象のWindowsバージョンをTargetFrameworkに(上の例は20H1かな?)
Microsoft.Windows.SDK.Contracts をゲット
NuGetでとりましょう
Install-Package Microsoft.Windows.SDK.Contracts -Version 10.0.19041.1
ここまではググると簡単に出てくると思います
エラー
この状態でビルドすると
1>C:\Program Files\dotnet\sdk\5.0.102\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(934,5): error NETSDK1130: .NETCoreApp,Version=v5.0 をターゲットにする場合、Windows メタデータ コンポーネントの直接参照はサポートされていません。このターゲットには、C#/WinRT プロジェクション ツール (https://aka.ms/cswinrt) または指定されたプロジェクションをご使用ください。
.NETCoreApp,Version=v5.0 をターゲットにする場合、Windows メタデータ コンポーネントの直接参照はサポートされていません。このターゲットには、C#/WinRT プロジェクション ツール (https://aka.ms/cswinrt) または指定されたプロジェクションをご使用ください。
こんな感じでエラーがでるはずです
相変わらず意味が分からん、英語だとわかるのかな?
Microsoft.Windows.CsWinRT をゲット
NuGetでこのパッケージをゲットするとエラーが消えます
Install-Package Microsoft.Windows.CsWinRT -Version 1.1.0
.NET 5でMicrosoft.Windows.SDK.Contracts を参照した場合CsWinRTが必要だよっていう記事は見つけられなかったんですが、必須ではないんですかねー?
Windows Runtime API を呼ばない
今回は呼ぶ前にすることなので呼びません。これで正常に呼び出せるのかも試していません。とりあえずビルドエラーが消えてうれしいです
おしまい