私は疑問に思っていました:コマンドラインからソリューションをコンパイルするときのmsbuildとdevenvの違いは何ですか?
Msbuildはソリューションに含まれていない依存プロジェクトをビルドしますが、devenvはビルドしません。
他にありますか? msbuildに渡してdevenvビルドと正確に一致させるための特別なフラグはありますか?
追伸Visual Studio 2010 SP1を使用しています
これによると MSDN Blog Entry 違いを最小限にしようとしますが、存在するもの(つまり、csc.exe
の代わりに統合されたC#コンパイラを使用するか、BuildingInsideVisualStudio
プロパティを設定する)があります。主にビルドのパフォーマンスを最適化するために行われます。
MSBuildの主な利点は、Visual Studioをインストールする必要がないことです。
MSBuildの制限の1つは、Visual Studioセットアッププロジェクトのビルドをサポートしないことです(。vdproj)。
(これは devenvを呼び出す実行タスクを定義する で回避できますが、それでもVisual Studioが必要です。)
もう1つの大きな違いは、msbuild
にはdevenv
には存在しないオプションがいくつかあることです。私が知る限り、devenv
の詳細度を上げる方法はありませんが、msbuild
の詳細度をオプションで増やすことができます。
/v:diag
プロジェクトファイルが見つからないときにdevenv
がエラーメッセージを書き込んだにもかかわらず、いずれにしても0を返す場合がありました。対照的に、msbuild
はゼロ以外の値を返しました。エラーを見落とさないように、メイクファイルをmsbuild
に切り替えました。