2011-07-05 17 views
4

この問題の解決策を見つけるのには苦労しています。MSBuildが正しいソリューションの依存関係を判断できません

約50のプロジェクト(C#)を含むソリューション(VS2008)があります。

プロジェクト間の依存関係はプロジェクト参照として追加されます(DLLを参照することではありません)。

また、VS内の依存関係は、解決策設定ダイアログで正しく設定されています。

問題は、私たちのCIサーバー上のMSBUILD(コマンドライン)からソリューションをビルドするとき、msbuildはソリューションファイルにレイアウトされている順序でプロジェクトをビルドします。依存関係。ノー溶液を用いて、ウェブ上でこのために多数の参考文献を見つけた

...

iは、コマンドラインからMSBuildので正しくソリューションを構築するために何ができますか?

+0

プロジェクト間参照がプロジェクトレベル(プロジェクト|参照の追加...)で構成され、ソリューションレベル(プロジェクト|プロジェクトの依存関係...)で構成されていないことを確認できますか?他のプロジェクトを参照している.csprojファイルには、参照プロジェクトごとに ''項目があるはずです。 –

+0

私は問題を解決しました。私は依存プロジェクトへの参照を削除し、それを再追加しました。 GUIDは多少異なっているように見えますが、私はどのように考えているのかわかりません。私はVSからビルドするときは問題はないと思いますが、MSBuildを使用するときは、参照されているプロジェクトを検出できず、正しい依存順序を構築できません。 –

+2

http://bit.ly/depfailにあるMSBUildチームのブログで、ソリューションの依存関係を使用する際の危機について説明しています。 –

答えて

1

これは、ソリューション内で無効なビルドオーダーが原因である可能性があります。プロジェクトを削除して再追加することなく、ビルド順序を変更することができます。ソリューションエクスプローラで、ソリューション名を右クリックし、Project Build Orderを選択します。 msbuildで動作するように、プロジェクトのビルド順を指定することができます。これは通常、VS内で開発中にDLLをキャッシュした場合に発生します。それが動作するかどうかを確認するには、ビルド順序を変更してビルドを実行する前に、すべてのobjおよびbinフォルダを削除します。