3 つのプロジェクトがあります。Project1.Web
、Project1.Service
およびProject1.Common
。Project1.Web
との両方Project1.Service
が に依存していProject1.Common
ます。
- 3 つのプロジェクトすべてを含むソリューションを再構築すると、すべて正しく動作します。
- でファイルを変更した場合
Project1.Web
; ファイルは Project1.Web\bin にビルドされます - すべて正常に動作します。 - ファイルを変更した場合、
Project1.Service
ファイルは Project1.Service\bin\Debug にビルドされ、一部は Project1.Web\bin にコピーされます。コピーされたファイルは Project1.Common.dll ですが、Project1.Web.dll はビルド (またはコピー) されていません。 - で変更されたファイル
Project1.Service
は共有されず、 のインクリメンタル ビルドをトリガーするために変更されただけですProject1.Service
。
Visual Studio がビルド アーティファクトをインクリメンタル ビルドの一部ではないディレクトリにコピーする理由を知っている人はいますか?
現在、この一連のイベント リーフProject1.Web
は動作していない状態でProject1.Service
ありProject1.Web
、サード パーティのアセンブリを介して同じアセンブリの異なるバージョンに依存しています。に変更を加えることにした場合Project1.Service
、 を壊すという副作用がありProject1.Web
ます。
私は次のことを試しました/チェックしました:
Project1.Web
とProject1.Service
(どちらの方向にも)の間に依存関係はありません。- で変更されたファイル
Project1.Service
は共有されません。ビルド前後のイベントは定義されていません。 - Project1.Service.csproj プロジェクト ファイルで msbuild を実行しても、同じ効果はありません。
- 下の bin ディレクトリに対する書き込み/作成権限を拒否
Project1.Web
しても、インクリメンタル ビルドは失敗しません。 Project1.Web
(Visual Studio 内から)参照する詳細または診断 msbuild 出力に出力は出力されません。- を使用する
procmon
と、devenv がmswebprj.dll
(C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\mswebprj.dll) を使用していることがわかります。これにより、ファイルのコピーが呼び出されます。