web-dev-qa-db-ja.com

コマンドラインビルドのMSBuildとdevenv

私は疑問に思っていました:コマンドラインからソリューションをコンパイルするときのmsbuildとdevenvの違いは何ですか?

Msbuildはソリューションに含まれていない依存プロジェクトをビルドしますが、devenvはビルドしません。

他にありますか? msbuildに渡してdevenvビルドと正確に一致させるための特別なフラグはありますか?

追伸Visual Studio 2010 SP1を使用しています

33
Filip Frącz

これによると MSDN Blog Entry 違いを最小限にしようとしますが、存在するもの(つまり、csc.exeの代わりに統合されたC#コンパイラを使用するか、BuildingInsideVisualStudioプロパティを設定する)があります。主にビルド​​のパフォーマンスを最適化するために行われます。

9
Christian.K

MSBuildの主な利点は、Visual Studioをインストールする必要がないことです。

MSBuildの制限の1つは、Visual Studioセットアッププロジェクトのビルドをサポートしないことです(。vdproj)。

(これは devenvを呼び出す実行タスクを定義する で回避できますが、それでもVisual Studioが必要です。)

22
shamp00

開発者、テスター、デプロイヤーなどの多層チームでプロジェクトを経験しました。 MSBuildはデプロイヤーの主要なツールでした。それらは、devenvを開かずにMSBuildのxml構成ファイルを編集するビルドパラメーターを設定するだけで、コンパイルおよび再コンパイルできます。実際、devenvがまったくないpre-prod環境でMSBuildを使用することがよくありました。

NantはApache Foundationによる同様のツールです。

詳細については、こちらをご覧ください。

4
Alberto De Caro

もう1つの大きな違いは、msbuildにはdevenvには存在しないオプションがいくつかあることです。私が知る限り、devenvの詳細度を上げる方法はありませんが、msbuildの詳細度をオプションで増やすことができます。

/v:diag
4
RunHolt

プロジェクトファイルが見つからないときにdevenvがエラーメッセージを書き込んだにもかかわらず、いずれにしても0を返す場合がありました。対照的に、msbuildはゼロ以外の値を返しました。エラーを見落とさないように、メイクファイルをmsbuildに切り替えました。

2
Alan