Mauiで 'InitializeComponent()' does not exist in the current context.

まえがき(必読ではありません)

 私はVisualStudio2022のLTSを普段は使用しているが、たまたまVisualStudioの再インストールを2度目に行った段階でPREバージョンをインストールしてしまった。今まで通り「'InitializeComponent()' does not exist in the current context.」が表示されたが、さらに

NETSDK1147    このプロジェクトをビルドするには、次のワークロードをインストールする必要があります: wasi-experimental
これらのワークロードをインストールするには、次のコマンドを実行します: dotnet workload restore    

という一文が加えられた。調べて見るとMaui用のワークロードとSDKがうまくインストールされていないようである。

 以下に記述した対策を講じたことで、エラーが消えたのでここに備忘録として書き残そうと思う。

概要

Mauiでデスクトップアプリのためにソースコードをしたあとデバックしようとすると、エラー一覧に次のようなメッセージが出た。

  • 'InitializeComponent()' does not exist in the current context.

  • 'InitializeComponent()'は現在のコンテキストに存在しません。

次のような対策をしてみても再び表示されてしまった。

  • PCの再起動
  • VisualStudioおよびVisualStudioインストーラーの再インストール

  • Maui等の必須ワークロードを再インストール
  • プロジェクト自体の再作成
  • ContentPageのビルドアクションをMauiXamlに変更(初期状態からこれになっていた)

以下の環境で行った

  • 日付 2024/07/21

  • Visual Studio 2022 バージョン 17.10.4 PRE

  • Maui

  • CommunityToolkit MVVM

 

自己流解決策

  1. VisualStudioのツールタブからコマンドプロンプトを開く。

    ツール>コマンドライン>開発者用コマンドプロンプト
  2. dotnet workload restore」を入力し、インストール完了を待機
  3. インストール完了後「dotnet workload install maui」を入力しインストール完了を待機
  4. すべて保存後PCの再起動。
  5. 該当プロジェクトをVisualStudio2022で確認し、エラーが表示されなければ完了。

その他(必読ではありません)

 エラーは表示されなくなっただろうか。私はVisualStudioインストーラーでワークロードをきちんとインストールできていなかったのかもしれない。

 私の環境特有のエラー理由かもしれないので、他に知見がある方やこの方法で解決できた方がいたら是非コメントしてほしい。読んでくださりありがとう。