#0. はじめに
自作のWinFormsなControlを使おうとして、ハマることがあるよ、という記事です。
具体的なトラブルとして、VisualStudioのDesignerで自作Controlを配置できなくなる現象に遭遇することがあります。
そもそも、どういった場面で自作Controlを作る必要に迫られるかというと、例えば、以前の記事で書いたとおり、Dockable WindowでEnter
, ESC
キー入力を受け取るには、標準のControlを継承して自作Controlを作る必要があります。
#1. 失敗 その1
これは有名ですが、自作Controlは対象プラットフォームがx64だとDesignerで表示されません。
なぜならば、VisualStudio自体はx86
アプリケーションなので、x64
向けにCompileされたAssemblyをloadできないからです。
回避するには、対象プラットフォームを一時的にx64
からAnyCPU
に変更します。
DebugだけAnyCPU
にして、Releaseはx64
のままでも良いかもしれませんね。
AnyCPU
でrebuildしてもDesigner画面のエラーが解消されなければ、Project内のbin, obj directoryを削除するとか、VisualStudioを再起動するとか、試してみてください。
#2. 失敗 その2
Assemblyに対してsignしていると、Designerで読み込まないことがあるようです。
私の場合は、AssemblyInfo.cs
で遅延署名の指定をし、プロジェクト
→ プロパティ
→ ビルドイベント
→ ビルド後イベントのコマンドライン
にて、sn.exe
で署名しています。
AnyCPU
でrebuildしてもダメな場合は、一時的に署名の設定を解除してみてください。
#99. 親の記事に戻る
Autodesk Inventor API Hacking (概略)