1
2

More than 1 year has passed since last update.

【C#】WinformsでCommandManagerクラスが認識されない

Last updated at Posted at 2023-03-05

環境

エディタ:VS2022
フレームワーク:.NET6
プロジェクトテンプレート:Windowsフォームアプリケーション

問題

MVVMの勉強をするために、あえて普段業務で使用しているWinformsを使用して
ソースを書いていましたが、CommandManager(System.Windows.Input)を記述したところ
「現在のコンテキストに'CommandManager'という名前は存在しません」のエラーが発生。

image.png

解決策

公式のドキュメントを見るとアセンブリは「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ではプロジェクト生成時から該当のアセンブリが含まれており追加する必要なし)

1
2
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2