54

StackOverflow を検索したところ、別のプロジェクトで UserControl を参照するフォームを開こうとすると、同様の問題が見つかりました。

私は得る

デザイナをロードする前にデータが失われる可能性を防ぐには、次のエラーを解決する必要があります。

次の 2 つのエラーに関連するメッセージ:

タイプ 'MyNamespace.CommonUi.InformationBox' が見つかりませんでした。この型を含むアセンブリが参照されていることを確認してください。このタイプが開発プロジェクトの一部である場合は、現在のプラットフォームまたは任意の CPU の設定を使用してプロジェクトが正常にビルドされていることを確認してください。

変数 'InformationBox1' が宣言されていないか、割り当てられていません。

InformationBox1InformationBoxデザイナーのフォーム上にあるユーザー コントロールのインスタンスです。

Friend WithEvents InformationBox1 As MyNamespace.CommonUi.InformationBox

プロジェクトが正常にMyNamespace.CommonUiビルドされます。

私はプロジェクトでインテリセンスを取得しているので、正しく参照されているとかなり確信しています。

これまでのところ、他の人が持っていたのと同じ:

これは、VS2005 の .NET2/x86 から VS2012 の .NET4/x64 に移行されたプロジェクトです。

ソリューションが 64 ビットで実行されている場合、機能せず、このデザイナー エラーが発生します。ただし、32ビット(技術的にはAnyCPU)に切り替えると、デザイナーを問題なく開くことができます。

同様のスレッドで他の提案を読みましたが、解決策を提供するようには見えません(「左右に移動して再構築する」オプションまで行きました)

4

16 に答える 16

74

問題は、Visual Studio がネイティブに 32 ビットであり、64 ビットで一部のコンポーネント (ListView など) の GUI 編集を行うことができないことだと思います。たとえば、ListView があるフォームでは、ソリューションを 32 ビットに変更して GUI を編集する必要があります。

要するに、この問題に直面している場合の答えは次のとおりです。

  1. ソリューションを 32 ビットまたは AnyCPU に変更します
  2. ソリューション/プロジェクトをクリーンアップして再構築する
  3. GUI を開いて編集する
  4. 保存して、ソリューションを 64 ビットに戻します
  5. クリーンアップして再構築
  6. 64ビットで実行

残念ながら、Visual Studioはまだ64 ビットに対応していないため、すべてのコントロールを 32 ビット モード (または AnyCPU モード) で設計する必要があります。

詳細については、この質問を参照してください。

Windows7 で VS 2010 デザイナー エラー 'Could not find type XYZ'. XPで問題なく動作

于 2014-10-24T01:09:28.010 に答える
17

この問題がありました。1 つのフォーム デザイナー ビューでのみ発生しましたが、コンパイル、開始、実行時にこのフォームを表示し、デザイナー モードで他のフォーム/コントロールを表示することができました。

これらの手順は役に立ちませんでした:

  • クリーン&リビルド
  • スタジオ再開
  • すべての bin および obj ディレクトリの削除
  • 参照の削除と追加
  • 否定、怒り、交渉、抑うつ、受容

私の場合の解決策

  1. 欠落しているタイプの名前を変更します (たとえば、InformationBox => InformationBox2)
  2. デザイナーを更新する (うわー、それは動作します!)
  3. タイプの名前を最初の名前に変更します
于 2014-01-10T20:35:43.090 に答える
10

すべての CPU を X86 に変更します。コントロールは 64 ビット マシンで実行しようとしている 32 ビットであり、コントロールの 64 ビット バージョンが見つかりません。

于 2013-09-25T22:46:35.323 に答える
2

ここにいくつかの詳細情報があります: the-designer-could-not-be-shown-with-platform-x64

また、デザイナーにアクセスしようとしているときに AnyCPU で実行するという解決策は回避策であり、私たちの目的には十分です。

于 2013-09-26T12:15:35.303 に答える
2

32ビットなどへの参照はたくさんありますが、私にとってうまくいった手順は次のとおりです。

  • すべての designer.vb ファイルで、ユーザー コントロールへのすべての参照 (たとえば、「InformationBox1 を InformationBox として」) を「MyNamespace.CommonUi.InformationBox」などの完全修飾クラス参照に変換します。

    • クリーン ソリューション

    • ソリューションを再構築します。

私の場合、これは VB6 から VS2008 への移行プロジェクトであり、両方の環境が 32 ビットであり、同じマシン上に 64 ビットが関与している兆候はありませんでした。

于 2015-11-16T16:19:47.023 に答える
1

これは、Visual Studio デザイナーが x64 アセンブリを読み込めないため、x64 用にコンパイルすると発生します。x86 アセンブリは 32​​ ビットのみのプロセスであるため、Visual Studio の設計者は x86 アセンブリのみを読み込むことができます。

  1. AnyCPUに変更することもできます
  2. x86 用にビルドすると、Visual Studio デザイナーはアセンブリを読み込んで、デザイン時にコントロールを表示できます。
  3. x64 アセンブリで設計せず、バッチまたは Visual Studio でのみビルドしてから、AnyCPU または x86 に戻します。
于 2017-01-08T12:13:12.790 に答える
0

これは本当に古い質問/問題であることを知っています。ただし、最新の VS 2022 (プレビュー) がネイティブ 64 ビットになり、64 ビット アプリケーションをビルドするときに x64 デザイナー モードでカスタム オブジェクトを処理できることを知っておく必要があると思いました。

于 2021-09-08T20:55:16.837 に答える