タイトルが示すように、私は現在、約 50 個のプロジェクトを含む VS2010 ソリューションを持っています。何も参照しない「最上位」プロジェクトに変更を加えても、VS は 50 個のプロジェクトすべてを再構築します。アドオンなしで Visual Studio 2010 Ultimate を実行しています。ILMerge を使用して、すべてのプロジェクトを 1 つのファイルに統合しています。
下位レベルの dll のタイムスタンプをチェックしてこれを確認したところ、コードが変更されていなくても、実際に再構築されていることがわかりました。
私はすべての応答とコメントを読みました:
私のソリューションで奇妙な VS2010 ビルドの不具合が発生する
Visual Studio で C# プロジェクトをリビルドする理由
しかし、それらのほとんどは、ビルド時間を短縮するためにプロジェクトをアンロードすることに関する提案を提供するだけで、修正に関して具体的なものは何もありません. 私は、VSがこれらの依存プロジェクトを再構築する必要がないのに再構築する必要があると考える理由を理解しようとしています。
[ツール] > [オプション] > [プロジェクトとソリューション] > [ビルドと実行] > [実行時にスタートアップ プロジェクトと依存関係のみをビルド] をオンにしましたが、効果はありません。
また、直接の依存関係が 8 つしかない「中間レベル」のプロジェクトを再構築すると、ILMerge が呼び出されず、依存プロジェクトが変更されていなくても、8 つのプロジェクトすべてが構築されます。
皆さん、ご意見をお寄せいただきありがとうございます。
追加した
いくつかの提案をテストするために、新しい WinForms プロジェクトをゼロから作成しました。次に、そのソリューション内に 2 つの新しいプロジェクトを作成しました。2 つの「最下位レベル」プロジェクトからすべてのコードとリソース (プロジェクト ファイルではない) を 2 つの新しいプロジェクトにコピーしました (ファイルとフォルダーをエクスプローラーから Visual Studio のプロジェクトにドロップすることでこれを行いました)。
最下位のプロジェクト、それをBと呼びましょう、他のプロジェクトを参照していませんでした。次のプロジェクトAはBのみを参照しました。したがって、必要な .NET および外部アセンブリ参照をプロジェクトに追加すると、ソリューションがビルドされます。
次に、新しい WinForm プロジェクトにAを参照させ、フル ビルドを行いました。したがって、参照チェーンは次のとおりです。
WinForm -> A -> B
次に、WinForm のみを変更し、標準ビルド (F6) を行いました。以前と同様に、Visual Studio は 3 つのプロジェクトすべてを再構築しました。
プロジェクトBのソース ファイルを体系的に削除した後、and を削除するResources.Designer.cs
と(そして、それらのリソースResources.resx
のオブジェクトを使用するコードをコメント アウトすると)、 WinFormを変更してもソリューション全体が再構築されなくなり、再構築のみが行われることがわかりました。ウィンフォーム。.Properties.Resources
を追加してプロジェクトBResources.resx
に戻すと(ただし、リソースを使用しないように参照コードをコメントアウトしたままにする)、完全なビルド動作が再び導入されます。Resources.Designer.cs
リソース ファイルが破損していないかどうかを確認するために、それらをもう一度削除してから ([プロジェクトのプロパティ] -> [リソース] を使用して) 新しいリソースを作成し、以前と同じリソース (単一の Excel ファイル) を再度追加しました。このセットアップでは、完全な再構築が引き続き行われます。
次に、単一のリソースを削除しましたが、リソース ファイルはプロジェクトBに残しました。リソースが追加されていなくても、リソース ファイルがプロジェクト内にある場合でも、完全な (不要な) 再構築が行われます。
(.NET 3.5) プロジェクトにリソース ファイルを追加するだけで、Visual Studio 2010 が常にそのプロジェクトを再構築するようです。これはバグですか、それとも意図した/予想される動作ですか?
もう一度ありがとう!