1

私の問題は比較的単純なようです。プロジェクト参照が適切に構成されたいくつかのプロジェクトを使用して、VS2010 で作成された ac# ソリューションがあります。私はビルド マシンで MSBuild を使用していますが、これは正常に動作し、正しい順序で段階的に効率的にビルドします。ただし、インターフェイスを拡張し (パブリック プロパティを追加するなど)、他のプロジェクトが依存しているプロジェクトの 1 つの AssemblyVersion をインクリメントすると、MSBuild がダウン ストリームの依存関係のキャッシュを更新できず、できないというエラーがスローされるようです。変更された dll の以前のバージョンを見つけます。興味深いことに、その直後にビルドを再度実行すると、出力が変更されておらず、エラーなしでビルドが完了したことが示されますが、正しいことを行ったという確信が持てなくなりました。

古い参照を保持しているように見えるファイル 'ResolveAssemblyReference.cache' があり、各ビルドの前にこれを obj/x86/Release フォルダーから削除すると、エラーが発生することはありませんが、出力があったかどうかはわかりません。再建された。

MSBuild がこれに苦労する理由と、2 番目のビルドで、最初のビルドが実際に機能し、ターゲットが最新であると報告されているように見える理由を理解したいと思います。

何が起こっているのかを理解するまで、互換性のあるファイルがあることを確認するために、ソリューション全体の再構築を常に強制する必要があります。

ちなみに、VS2010 でビルドした場合、ビルドごとにキャッシュが適切に更新されると思われるため、これに苦しむことはないようです。

アップデート:

MSBuild のコマンド ラインで 'OutDir' を使用したことが原因のようです。これを削除すると、参照は適切に解決されるようです。ただし、現在、展開に必要な場所に出力がコピーされていません...

4

0 に答える 0