Visual Studio が未修正のプロジェクトを再構築する
質問
タイトルにあるように、私は現在、50 のプロジェクトを含む VS2010 ソリューションを持っています。もし私が何も参照していないトップレベルのプロジェクトに変更を加えると、VS は 50 のプロジェクトすべてを再構築します。私はVisual Studio 2010 Ultimateをアドオンなしで使用しています。ILMerge を使用して、すべてのプロジェクトを 1 つのファイルに統合しています。
下位レベルの dll のタイムスタンプをチェックすることによってこれを検証し、コードがタッチされていないにもかかわらず、実際に再構築されることを確認しました。
に対するすべての応答とコメントを読みました。
私のソリューションで VS2010 ビルドの奇妙な不具合が発生する
Visual Studio で C# プロジェクトが再構築される理由
しかし、それらのほとんどは、ビルド時間を短縮するためにプロジェクトをアンロードすることを提案するだけで、修正方法について具体的なことは何も述べていません。私は、依存するプロジェクトが再構築される必要がないのに、なぜ VS が再構築される必要があると考えるのかを解明し、それを修正しようとしています。
ツール > オプション > プロジェクトとソリューション > ビルドと実行 > 起動プロジェクトと依存関係を実行時にのみビルドする」をオンにしましたが、効果がありません。
また、8 つの (中) 直接依存関係があるだけの "mid-level" プロジェクトを再構築すると、ILMerge が起動されず、依存するプロジェクトがどれも変更されていないにもかかわらず、8 つのプロジェクトすべてがビルドされます。
提供できるかもしれないどんな洞察でも、みなさんありがとうございます。
追加
いくつかの提案をテストするために、私はゼロから新しい WinForms プロジェクトを作成しました。次に、そのソリューション内に 2 つの新しいプロジェクトを作成しました。私は、2 つの「最下位レベル」のプロジェクトから、すべてのコードとリソース (プロジェクト ファイルではない) を 2 つの新しいプロジェクトにコピーしました (私は、エクスプローラーから Visual Studio のプロジェクトにファイルおよびフォルダーをドロップしてこれを実行しました)。
最下層のプロジェクトは、仮に B は他のプロジェクトを参照しませんでした。次のプロジェクトは A を参照しています。 B だけです。そのため、必要な .NET と外部アセンブリの参照をプロジェクトに追加すると、ソリューションがビルドされるようになりました。
次に、新しい WinForm プロジェクトの参照に A を参照し、フルビルドを行いました。つまり、参照チェーンは
WinForm -> A -> B
次に、私は WinForm のみ を追加し、標準ビルド (F6) を実行しました。以前と同様に、Visual Studio は 3 つのプロジェクトすべてを再構築しました。
プロジェクト内のソース ファイルをいくつか体系的に整理した後
B
を削除すると
Resources.Designer.cs
と
Resources.resx
(を使用するコードをコメントアウトしています。
.Properties.Resources
オブジェクトを利用するコードをコメントアウトしています)、次に
WinForm
を修正すると、ソリューション全体がリビルドされなくなり
WinForm
.
を追加する
Resources.resx
と
Resources.Designer.cs
プロジェクトに戻る
B
(ただし、リソースを何も利用しないように、参照されるコードをコメントアウトしたまま) は、完全なビルド動作を再び導入します。
リソース ファイルが破損しているかどうかを確認するために、それらを再度削除してから、新しいものを作成し (プロジェクトのプロパティ -> リソース)、以前と同じリソース (単一の Excel ファイル) を追加しなおしました。このセットアップでは、完全な再構築はまだ発生します。
次に、単一のリソースを削除しましたが、リソース ファイルはプロジェクトに残しておきました。 B . リソースを追加せず、リソース ファイルをプロジェクトに残したままでも、完全な (不要な) 再構築が発生します。
(.NET 3.5) プロジェクトにリソース ファイルが追加されただけで、Visual Studio 2010 はそのプロジェクトを常に再構築するようです。これはバグでしょうか、それとも意図された/予期された動作でしょうか?
みなさん、本当にありがとうございます。
どのように解決するのですか?
ツール - オプションを開き、ツリーで [プロジェクトとソリューション] - [ビルドと実行] を選択し、"MSBuild project build output verbosity" を Diagnostic (診断) に設定します。 これにより、プロジェクトを構築した理由、つまり、次のようなことが出力されます。
プロジェクト 'ReferencedProject' は最新ではありません。プロジェクト項目 'c:\some.xml' の 'Copy to Output Directory' 属性は 'Copy always'に設定されています。
または
プロジェクト 'MyProject' は最新ではありません。入力ファイル c:\MyProject.pdb' の後に変更されています。 入力ファイル 'c:\MyProject.ddb' が出力ファイルの後に変更されています。
この場合、some.xmlが新しい場合のみコピーするように修正します。
ビルド前とビルド後のイベントもビルドのトリガーになります。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】Visual Studio 2012 Release Previewのインストール後に「LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt」エラーが発生する。
-
[解決済み] Could not find a part of the path ... binroslyncsc.exe
-
[解決済み] Visual Studioのデバッグ/ロードが非常に遅い
-
[解決済み] Visual Studioで、既存のディレクトリツリーをプロジェクトに追加するにはどうすればよいですか?
-
[解決済み] Visual Studio の .suo と .user ファイルをソースコントロールに追加する必要がありますか?
-
[解決済み] Visual Studioでディレクトリ構造全体を「既存の項目を追加」するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である