このソリューションにはC#プロジェクトが多数含まれています。それらの間には複雑な依存関係があります。プロジェクトA/B/C、Bの扶養家族、Cの扶養家族B:プロジェクトCで1つのファイルを変更した場合、プロジェクトA、B、Cが一緒に再構築されます。C#はインクリメンタルプロセスをコンパイル/ビルドしていますか?
C++では、buildには2つのプロセス、コンパイルおよびリンクが含まれています。プロジェクトCで1つのファイルを変更すると、ソリューションをビルドし、AとBの関連ファイルがコンパイルされます(他のファイルはコンパイルされず、.objはリンクプロセスで再利用されます)。
javaでは、プロジェクトCの変更されたファイルのみが再コンパイルされ、他のファイルはパッケージ化されて.jarに保存されます。以前の作業出力を再利用します(変更されたファイルの.class)。
つまり、C#は以前の作業出力を再利用しません。 Javaの.classやC++の.objのような中間ファイルはありません。この点では、C#はインクリメンタルビルドプロセスを実行しないと感じています。小さな変更は大きなビルドプロセスを引き起こします。なぜC#が以前の作業出力を使用してビルドプロセスを高速化しないのか分かりません。
C#のコンパイル/ビルドプロセスの理解が正しいかどうかはわかりません。もっと説明するのを助けてくれますか?どうもありがとう。
Windowsバッチファイルを作成すると、すべての依存関係とビルドフォルダを記述して、すべてをシングルショットでビルドすることができます。 – csharpcoder
Eric Lippertは2010年に[How many passes?]というタイトルの記事を書きました。(https://blogs.msdn.microsoft.com/ericlippert/2010/02/04/how-many-passes/):「C#言語宣言が使用の前に発生する必要はありません...ユーザーに与える影響は、ファイルを変更したときに変更されたILのみを再コンパイルする必要はないということです。これを見るもう1つの方法は、C#での再コンパイルの「粒度」はプロジェクトレベルではなく、ファイルレベル " –
ビジュアルスタジオ、ソリューションエクスプローラウィンドウでソリューションを右クリックし、プロジェクト/ソリューションのビルドオーダーを参照してくださいプロジェクトの依存関係も表示されます – Kyle