1

アプリケーションをビルドするときにフォームデザイナでクラッシュするコントロールがあり、問題をデバッグする方法を見つけようとしています。

デバッガーを使用できるようにするために必要なのは、VSの2番目のコピーを開始し、Debug-Attachを使用して、面倒なコントロールを備えたソリューションが含まれているVisualStudioのコピーを処理して添付することだけだと思いました。それをしましたが、コントロールがクラッシュしても何も起こらないので、何か間違ったことをしていることがわかります...

クラッシュはデザイナで発生し、メッセージボックスを返します。

---------------------------
Microsoft Visual Studio
---------------------------
The control NameSpace.MyControl has thrown an unhandled exception in the designer and has been disabled.  



Exception:

Could not load file or assembly 'OtherProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.



Stack trace:

   at NameSpace.MyControl.OnPaint(PaintEventArgs e)
---------------------------
OK   
---------------------------

OtherProjectはソリューションの一部であり、フォームとカスタムコントロールの両方を含むプロジェクトによって参照されます。

メッセージボックスを閉じると、コントロールはフォーム上のコントロールのスタックトレースを表示しますが、行番号が含まれていないため、問題の原因がわかりません。

4

1 に答える 1

4

アセンブリの検索パスは、設計時に読み込まれる場合とは異なり、VisualStudioのプローブパスになります。これは、Common7\IDEのdevenv.exe.configファイルによって構成されます。パブリックアセンブリフォルダーとプライベートアセンブリフォルダーのみが含まれます。プロジェクトのビルドディレクトリは考慮されません

この.configファイルを変更したり、アセンブリをこれらのフォルダーの1つにコピーしたりすることは、実際的ではありません。最善の方法は、設計時にこのアセンブリを必要とするコードを呼び出さないことです。DesignModeプロパティを使用します。

    protected override void OnPaint(PaintEventArgs e) {
        if (!this.DesignMode) {
            // Runtime painting code here
            //...
        }
        base.OnPaint(e);
    }
于 2010-09-16T19:44:19.897 に答える