1

ワークステーションの速度にもよりますが、私の現在のプロジェクトをコンパイルするには、約 90,000 の loc + 約 100 の DLL を持つ 1 つの exe ファイルに約 30 分以上かかります。

ビルド プロセスは、Powershell スクリプトから devenv を実行するプロセスの 1 つです。これは問題なく非常にうまく機能します。

問題は、それが遅いことです。このビルド プロセスをスピードアップしたいと考えています。

MSBuild (VS-2005 を使用) は 1 つのオプションですが、コマンド ラインで vb コンパイラ/リンカーにアイコンを指定すると、正常にリンクされないというバグがあります。

VB.NET プログラムを「作成」する他のオプションはありますか?

(より高速なワークステーションはオプションではありません。)

4

5 に答える 5

3

毎回ソリューション全体を絶対にコンパイルする必要がありますか? これほど多くのアセンブリがあると、実際に変更しない限り、すべてをビルドする必要はないように思われます。ソリューションが複数のプロジェクトで構成されている場合は、ビルド環境で複数のソリューションを作成することを検討してください。1 つのマスター ソリューションにはすべてのプロジェクトが含まれ、別のマスター ソリューションには最も頻繁に変更されるプロジェクトが含まれます。その後、ビルド プロセスを構成して、変更されたプロジェクトに焦点を当てることができます。使用するソース管理システムによっては、システムにクエリを実行して、最後のビルド以降に変更されたプロジェクトを特定し、それらのプロジェクトのみをビルドできる場合があります。

于 2008-12-20T03:03:56.033 に答える
1

可能であれば、MSBuild の 3.5 バージョンにアップグレードしてください。ソリューション ファイルをビルドでき、マルチプロセッサ サポート(自分でホストする必要がある場合はここ) のサポートを有効にして、プロジェクトを並行してビルドできるようにします。

注意点は、何をビルドするかを認識できるように、プロジェクト参照を使用する必要があることです。

また、現在どのくらいかかりますか?CPU/メモリ使用量 ( PerfMonなどを使用) を調べて、それがボトルネックになっているかどうかを確認しましたか?

于 2008-12-20T03:10:00.563 に答える
1

NAntと、連続ビルド用のCruisecontrol.NETがあります。

より高速な PC を入手することは選択肢ではないとおっしゃいましたが、メモリはどれくらいありますか? 開発者用マシンの最小容量は 2GB です。また、10K RPM の高速ハードディスクを使用すると、大きな違いが生じます。

ビルド中にウイルス スキャナーを無効にしてみましたか?

于 2008-12-20T02:05:48.740 に答える
0

プロジェクトの数が多い場合は、それらを減らすようにしてください。後でいつでもdllに分割できます。プロジェクトが少なければ少ないほど、ビルドは速くなります。特に、特定の順序でそれらを構築する必要がある場合。

それらをより小さなソリューションに分割することもオプションです。

于 2008-12-20T08:21:01.637 に答える
0

マシンにコア、CPU パワー、およびメモリを追加する以外に、ビルド プロセスを高速化するためにできることはあまりありませんが、それはあなたの場合のオプションではありません。

ほとんどの大規模なプロジェクトは、単一の EXE では自己完結型ではありません。多くの場合、論理ユニットは、DLL または EXE のいずれかである個別のアセンブリに移動されます。最終結果は、1 つの巨大なアセンブリではなく、小さなアセンブリの集まりです。

一例を挙げると、私が取り組んだあるプロジェクトは膨大で、700 以上のフォームと数十から数千のクラスで構成されていました。機能的に関連するフォーム (印刷、レポートの生成、ユーザーへの問い合わせなどに関連するものなど) は、独自の EXE で自己完結していました。レポートに取り組んでいる場合は、レポートに関係のないすべてのプロジェクトをビルド プロセスから除外します。これにより、コンパイル時間が 30 分から数秒に短縮されます。

このプログラミング スタイルは扱いにくい場合がありますが、正しく実行すると、問題なく機能します。

于 2008-12-20T05:52:49.143 に答える