2009-05-07 6 views
7

小規模なプロジェクトでは、デザインビューにほぼ即座に切り替えることができます(< 1秒)。デザインビューが非常に遅くなる原因は何ですか?

私は、デザインビューでコントロールやフォームを開くのに約60秒かかる大規模なプロジェクトを持っています。これは初回のみです。この60秒の遅延の後に、私はプロジェクトを再コンパイルするまで、ほとんどすべてのコントロールをデザインビューで開くことができます。

このプロジェクトによって構築されたexeが別の(小さな)プロジェクトで参照されている場合、小さなプロジェクトはすぐに大きなプロジェクトほど遅くなります。同様に、大規模プロジェクトのすべてのファイルを小規模プロジェクトに個別に追加すると、小規模プロジェクトは低速になります。

大きなプロジェクトは大きなManaged C++プロジェクトを参照しますが、小さなプロジェクトに同じ参照を追加して(参照から関数を呼び出してロードされていることを確認してください)、小さなプロジェクトはまだ高速です。

私の大きなプロジェクトはSandDockを使用しています。私の小規模プロジェクトでSandDockを使用している場合、まだ高速です。

大きなプロジェクトには、ツールボックスに表示される約60個のユーザーコントロールがあります。小さなプロジェクトに60個のユーザーコントロールを追加すると、小さなプロジェクトはまだ高速です。

[System.ComponentModel.ToolboxItem(false)]を使用してツールボックスからユーザーコントロールを非表示にすると、大きなプロジェクトはまだ遅いです。

この問題は、vs2005とvs2008の両方で発生します。

大きなプロジェクトでデザインビューを初めて開くのが遅いのはなぜですか?いくつかの他の参照?多数のコントロール?たくさんのクラス?その他の原因は?

ProjectAssembliesフォルダ(C:\ Documents and Settings \ tim.gradwell \ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies)が巨大であることがわかりました(1GB以上)、ここにあるほとんどのフォルダには私のManaged C++ dllのコピーがあります!これらのフォルダは、デザインビューが(再コンパイル後に)再オープンされるたびに再作成されるように見えます。これは減速と関係がありますか?


さらに情報:

ユーザーコントロールまたはフォーム内のToolStripは、フォームのロードに60秒かかります。ツールストリップを取り外すと(ただし、フォーム上にいくつかの異なるコントロールが残っている)、スイッチをデザインビューに即座に切り替えることができます。

これは全部の話ではありません...新しいプロジェクトのツールストリップは大きな減速を引き起こさないため、大きなプロジェクトでツールストリップに影響を与えるものがなければなりません。また、ツールストリップを持たない他のフォームやコントロールでは、デザインビューを表示するのにまだ60秒かかるので、ツールストリップに影響を与えているものは他のコントロールにも影響します。私は正確にどのコントロールを釘付けにしようとしているのでしょうか、それが原因であるのかもしれません!

+0

わかりやすくするために、スローダウンを引き起こす大きなプロジェクトはC#で正しいですか? – overslacked

+0

プロジェクトはC#で書かれています...管理されたC++プロジェクトも参照していますが、管理されたC++プロジェクトを隔離して、その違いが生じたかどうかを確認する時間がありませんでした。 –

答えて

0

同じ同じようなことがDEVENV.EXEも「建物」の後にランダムに

がハングアップしていることにadditonで私の2005年に起こっている、時にはカスタムコントロールは、あなたが最近持って破損し、メインフォーム

する傾向がありますウイルススキャンし、デフラグ?

+0

マシン(新しいウィンドウのインストールのように)。古いマシンでは、デザインビューを開くのに数分かかります。 –

7

ツールボックスに表示されないようにクラスを設定しているにもかかわらず、Visual Studioは開いているすべてのプロジェクトをスキャンする必要があります。作業を高速化するには、ツールボックスを自動的に設定するために設定をオフにする必要があります。あなたがツールボックスを使って多くの作業をすると少し迷惑をかけることがありますが、それは多くのことをスピードアップします。

設定は[ツール] - > [オプション] - > [Windowsフォームデザイナ]で行い、 "AutoToolboxPopulate"をfalseに設定します。

+0

AutoToolboxPopulateがfalseに設定されていても、提案がありがとうございました:( –

+0

再起動後やクリーニング後などでも、迷惑なことに、同じ状況がありました。 ! –

2

最初の答え: "設定はツール - >オプション - > Windowsフォームデザイナーで、" AutoToolboxPopulate "を" false "に設定すると機能します。デザイナーは、デザインビューで最初にフォームを見たときに、フォームのコントロールに焦点を合わせようとすると、少なくとも1分間はハングしていました。今、ほんの数秒しかかかりません。 (私はその回答に直接コメントするのに十分な評判ポイントがありませんでした)

0

Visual Studio 2005のWindows CE 6.0プロジェクトでこの問題が発生しました。このプロジェクトではSystem.Data.SQLite.dll v1.0.65.0 。プロジェクトを開いたり再コンパイルした後、グリッドを含むフォームをデザイン用に開こうとするたびに、少なくとも12分の遅延があります。 「My Documents¥Local Settings¥Application Data¥Microsoft¥Visual Studio¥8.0¥Project Assemblies」の下に770個のフォルダが生成されていたことが分かりました。そのほとんどはSQLite dllのコピーを持っていました。
問題は、このDLLをプロジェクト内の "兄弟"フォルダからプロジェクトに参照していたようです。
Projectフォルダ:一例として、 "...プロジェクト\ ThisAndThat \ projectFolder"
DLLフォルダ: "...プロジェクト\ ThisAndThat \ projectFolderBin"
この問題をマニフェスト他のフォルダの関係があるかもしれませんが、私はやりました調査しない。
"Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE"フォルダにDLLを移動し、問題が解決しました。私は2つのタブを含むタブコントロールを持つフォームを持っています。各タブには、データグリッドコントロールが含まれています。このフォームはデザイナーにほとんど即座に読み込まれます。
VS2005のより良い解決策、または設定や動作がこの問題の原因となる場合は、コメントを追加してください。

関連する問題