スキップしてメイン コンテンツに移動

【VS2019】ある日急にデザイナーがエラーを吐いた時の対処メモ

仕事でVisual Studio 2019 Communityを使う時があるのですが、ある時、前日まで普通に使えていたプロジェクトのうち、フォームのデザイナがエラーを起こしてしまいました。

---
データが失われる可能性を防ぐため、デザイナーの読み込み前に以下のエラーを解決する必要があります。

このファイルのデザイナーに、デザインできるクラスがないため、デザイナーを表示できませんでした。
---

こんなメッセージが。

結論から言うと直ったのですが、この現象への対処法を調べましたのでまとめます。




該当フォーム内に、参照が切れているコントロールを載せている

ユーザーコントロールを含んだDLLまたはアセンブリを参照してコントロールを載せたはいいけど、参照元のDLLをうっかり移動させてしまって読めなくなってるパターン。
よく見ると「参照」フォルダ内のDLLに警告アイコンがついていたりします。
また、Designerファイル内の定義した箇所が警告されます。
これはDLLを戻すなり新たに参照し直すなりすれば解決します。

→私の場合は.NET Framework標準のSystem.Windows.Forms内のコントロールだけで構成されたフォームもダメでした。


似たような事例として、x64でビルドされたアセンブリを継承したフォームを使った

https://blogs.yahoo.co.jp/dk521123/29205330.html
こちらに書いてあるのですが、Visual Studioは32bitで動作するため、x64でビルドされたアセンブリ内にあるフォームを継承することは出来ないようです。
アセンブリをx86かAny CPUでビルドし直すしかないとのこと。


Formのクラス定義より先に、Formファイル内に別のClassを定義している

これも上記のurlと同じ所に書いてありました。

Formのコードファイル(<フォーム名>.vbとか<フォーム名>.csとか)では
Public Class <フォーム名>
と宣言して各種処理を書いていくわけですが、これより先に別のClassの定義を書くとダメとのことです。
これは知りませんでした。

→私の場合は、カスタムフォームは使っていないしFormのファイルに別Classを定義していないので、これもハズレ。


一度クリーンしてみたり色々

https://anopara.net/2014/03/10/cform%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8A%E3%81%8C%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E5%90%90%E3%81%84%E3%81%9F%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6/
こちらの「例3」を参考にしました。
---
一度クリーンしてからビルドしてみる
Visual Studioを再起動してみる
Designer.csを直接編集して、怪しい行をコメントアウトしてみる
他のFormが開けるかどうか試してみる
---

→これもダメでした。そもそも前日までデザイナーの表示はできていた(編集はしていない)のです。


いろいろ消してみる

https://ameblo.jp/realsystems/entry-11299589753.html
次に試したのはこれ。
---
1. すべてのフォームを閉じる
2. VisualStudioを閉じる(この時すべてのフォームを閉じておくこと)
3. "bin" および "obj" フォルダを削除
4. VisualStudioを開く
5. リビルドする
---

→ダメでした・・・が。

どうせbinやobjもダメなら他のも消してしまえ!
というわけで、以下のようにやってみました。

---
1. packages.configがプロジェクトと同じフォルダにあることを確認
2. [ツール]→[NuGetパッケージマネージャー]→[パッケージ マネージャー設定]で、「見つからないパッケージのダウンロードをNuGetに許可」となっていることを確認
3. すべてのフォームを閉じる
4. VisualStudioを閉じる(この時すべてのフォームを閉じておくこと)
5. "bin"、"obj"のほか、".vs"、"packages" フォルダを削除
6. VisualStudioを開く
7. リビルドする
---

→これで表示されるようになりました。
.vsを消したのでソリューションまわりで再設定をしなきゃいけないものが出てくる場合もありますが、デザイナーが使えないと話にならないプロジェクトもありますからね。
自分用のメモも兼ねていますが、参考になればと思います。

コメント

匿名 さんのコメント…
64ビットでビルドしてました。すごい助かりました。ありがとうございます。
kalafiorjoe さんの投稿…
コメントありがとうございます。参考になったようで良かったです。
64ビットのバイナリしか持ってなかったら詰んでしまいますよね、これ。
私のところはバイナリしかないということはないのですが、ちょっと心配になりますねー。どうにかならんのかな・・。
匿名 さんのコメント…
初めて64bit専用アプリを作ってたどり着きました。
ほんと助かりました。
継承後、デザイナがゴネることは慣っこだったのですがこれは酷いですね。
ちなみにVS2017です。

Communityだから仕方がないかもしんないけど有償賞品でこれだとやばいんじゃない?
kalafiorjoe さんの投稿…
コメントありがとうございます。参考になったようで何よりです。
私は最近この現象に遭遇してはいないのですが、未だにこの現象が起きているんですかね・・。
.vsとpackagesを自動的に再構築させるだけなので、Visual Studio側で対処できるような内容だと思うんですけどね。

有償商品でコレだとしたら、信頼できなくなっても仕方ないと思います。
なんでこんな誰でも起きうるようなことを放置しているのかと・・

このブログの人気の投稿

今更ながらマキシマムザホルモン「絶望ビリー」出演者が誰なのか調べてみた

ふと思い立ってマキシマムザホルモンの「絶望ビリー」のPVに登場する人たちを調べてみました。 ・・・といっても下記の二組(というか一組と一人)は不明なままです。 【不明な人たち】 ・アコギの二人組 ・フェンスを叩いて叫んでいるマッチョな人 ・アナウンサー ・クイズ番組の回答者(一人は亮君だけど) 【判明した出演者】 ・ビジュアル系のバンド・・・ PARFAIT (複数のサイトで確認。たぶん合ってる) ・アイドル系の女の子・・・ 辰巳 奈都子 ・ヒップホップ系の二人組・・・アンディとジョージ☆(というらしい。真偽不明) ・ギターを弾いて歌っている女性・・・ KIKU ( THE SWEET TRIP というバンドのvo/g) というわけで、全員はわかりませんでした。 個人的にはKIKUという人のギターの弾き方が気になっていたので、名前がわかって良かったですw

[アプリ]Pushbulletの代替

Pushbullet使えなくなっちゃったんですよね(だいぶ前に プッシュ通知でPCやモバイルなどにファイルやテキストを共有したりすることができる、Pushbulletというアプリがありました。 私は仕事では状況に応じて デスクトップ(Windows10) Chromebook iPad を使っています。 例えばデスクトップのエディタで書いたテキストを、会議で使うためのiPadに送信したりする時に、このPushbulletは重宝していました。 ただ残念ながら、iOS(iPadOS)版は、2020年に公開停止されてしまいました。 それからはicloud.comのテキストメモやGoogle Keepを使ってみたり、Gmailで自分宛に送ってみたりしていたのですが、同期や転送が遅かったりして、今いち使い勝手に悩んでいました。 そんな中、リモート会議の準備をする時にふと思いついて、あらためて調べ直してみました。