拡張コントロールを認識しない

タグの編集
投稿者 ネコ  (社会人) 投稿日時 2016/12/12 19:21:34
以前、VisualStudio2008で開発したプロジェクトをVisualStudio2012の変換ウィザードで変換しました。
デバッグモードで実行はできたのですが、一部の拡張コントロールが読み込めずフォームデザイナで画面を開くことができなくなってしまいました。


問題の拡張コントロール(DataGridViewEx) はDataGridViewを機能拡張したもので、Enterキー押下時、タブキー押下とし、それ以外のキーの場合は、通常通り実行するものです。


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


「.NET、移行、 拡張コントロール 」などのキーワードで検索しても VB6からの移行方法など古い情報ばかりで、どのように調べていけばよいのかわからず、ここに投稿させていただきました。


開発環境のOSは Windows10 Pro 
VisualStudio Professional 2012 のバージョンは 11.0.50727.1 です

よろしくお願いします。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/12/13 09:43:30
> エラーメッセージの内容は
メッセージ内容にあった確認作業は実施済みでしょうか?


> フォームデザイナで画面を開くことができなくなってしまいました。
デザイナコードもしくはシリアライズ情報に問題が発生している可能性を疑っていますが、これは実際のファイルを見てみないとわかりません。


ひとまず、次のことを試してみてください。

(1) フォームデザイナは一旦閉じておきます。
(2) コンパイル済みのファイル群を削除します。
(3) プロジェクトもしくはソリューション全体をリビルドします。
(4) この状態でフォームデザイナを開き直します。


これでもまだ問題が継続する場合、あるいはそもそもビルドが行えなかったという場合には、次の作業を実施してみてください。


(1) 新規プロジェクトを用意します。

(2) 新規ファイル DataGridViewEx.vb を用意し、そこに元の DataGridViewEx クラスの内容を転写します。(DataGridViewEx が別アセンブリだった場合は、その DLL を参照設定しても OK です)

(3) プロジェクトをビルドした後、Form1 デザイナを開き、そこに、DataGridViewEx を貼り付けます。


新規プロジェクトであれば問題無いなら、それは変換後のプロジェクトの問題なので、両者の違いを調査するか、フォームを再作成して設定情報等を写していくなどの対処を試みてください。

新規プロジェクトでも問題が生じるなら、DataGridViewEx クラスの内容による問題(あるいは開発環境の差異による問題)と思われますが、現段階では情報不足でわかりません。この場合には、新規プロジェクトで下記の様な最低限のクラスを用意し、これが使えるかどうかを確認してみてください。

Public Class DataGridViewEx
    Inherits DataGridView
End Class


単純なコードであれば問題が出ないのなら、コードの内容を徐々に元のソースに近づけていく(あるいは、元のソースの一部をコメントアウトして単純化する)ことで、どこに問題があるかを探ってみてください。
投稿者 ネコ  (社会人) 投稿日時 2016/12/13 14:42:03
とりあえず、一旦コンパイルしたファイル群を削除。
ソリューション全体をリビルドしてみましたが、問題は解消しませんでした。

次に新規プロジェクトを準備して
そちらにDataGridViewExクラスを追加して元の内容を転写したところ
Form1へDataGridViewExを張り付けることができました。

新規プロジェクトで問題ないことから変換後のプロジェクト側に問題がありそうです。
フォームを再作成して設定情報の違いなどを調べてみます。

少ない情報で丁寧にご回答いただきありがとうございました。


投稿者 ネコ  (社会人) 投稿日時 2016/12/13 16:28:40
魔界の仮面弁士 様
丁寧なご回答、あらためて有難うございました。

今回投稿させていただいた問題について、何が問題だったのかが
判明しましたので、ご報告させていただきます。

原因は拡張コントロールを張り付けた画面をプラットフォーム64ビット
でビルドした場合、フォームデザイナ上ではエラーとなって表示できない
ことがわかりました。

プラットフォームを AnyCPU に設定してやることで
フォームデザイナが正常に表示されるようになりました。

基本的なことも知らず、大変申し訳ありませんでした。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/12/14 09:23:19
> プラットフォームを AnyCPU に設定してやることで
> フォームデザイナが正常に表示されるようになりました。

結果報告、ありがとうございます。
最初のエラーメッセージで提案された内容そのままだったのですね。(^^;
原因が分かって何よりです。