環境
エディタ:VS2022
フレームワーク:.NET6
プロジェクトテンプレート:Windowsフォームアプリケーション
問題
MVVMの勉強をするために、あえて普段業務で使用しているWinformsを使用して
ソースを書いていましたが、CommandManager(System.Windows.Input)を記述したところ
「現在のコンテキストに'CommandManager'という名前は存在しません」のエラーが発生。
解決策
公式のドキュメントを見るとアセンブリは「PresentationCore.dll」とのこと。
プロジェクトの参照を確認し、該当のアセンブリは存在しないことを確認。
以下のディレクトリからPresentationCore.dllを参照に追加することで解決しました。
C:\Program Files (x86)\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0
※2023/03/06追記
対象のアセンブリのみを追加するのではなく、UseWPFプロパティを利用することで
WPF ライブラリへの参照を含めることができるとのご指摘をいただきました。
csprojファイルに追記すると、.NET5以降のプロジェクトで
.NET デスクトップ SDK が自動的にインポートされます。
@juner 様 ありがとうございました。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
反省
Winformsで書かれたサンプルコードが少なく、WPFのコードを参考にしていたために詰まりました。。。
Winformsを使用する場合は明示的に追加する必要があるということを学びました。
(WPFではプロジェクト生成時から該当のアセンブリが含まれており追加する必要なし)