コマンド ラインからソリューションをコンパイルするときの msbuild と devenv の使用の違いは何ですか?
msbuild はソリューションに含まれていない依存プロジェクトをビルドしますが、devenv はビルドしません。
他にもありますか?devenv ビルドと正確に一致させるために msbuild に渡すことができる特別なフラグはありますか?
PS私はVisual Studio 2010 SP1を使用しています
コマンド ラインからソリューションをコンパイルするときの msbuild と devenv の使用の違いは何ですか?
msbuild はソリューションに含まれていない依存プロジェクトをビルドしますが、devenv はビルドしません。
他にもありますか?devenv ビルドと正確に一致させるために msbuild に渡すことができる特別なフラグはありますか?
PS私はVisual Studio 2010 SP1を使用しています
MSBuild の主な利点は、Visual Studio をインストールする必要がないことです。
MSBuild の 1 つの制限は、Visual Studio セットアップ プロジェクト ( .vdproj )のビルドをサポートしていないことです。
( devenv を呼び出す exec タスクを定義することでこれを回避できますが、それでも Visual Studio が必要です。)
このMSDNブログエントリによると、違いを最小限に抑えようとしますが、存在するもの(つまり、プロパティの代わりに統合C#コンパイラを使用するcsc.exe
か、プロパティを設定するBuildingInsideVisualStudio
)は、主にビルドのパフォーマンスを最適化するために行われます。
もう 1 つの大きな違いは、msbuild
には存在しないオプションがいくつかあることですdevenv
。私が知る限り、詳細度を上げる方法はありませんが、オプションdevenv
で詳細度を上げることができmsbuild
ます:
/v:diag
私は、開発者、テスター、デプロイヤーなどの多層チーム内でプロジェクトを経験しました。MSBuild は、デプロイ担当者の主要なツールでした。devenv を開かずに、MSBuild の xml 構成ファイルを編集してビルド パラメータを設定するだけで、コンパイルと再コンパイルを行うことができました。実際、devenv がまったくない本番前の環境で MSBuild を使用することがよくありました。
Nant は Apache Foundation による同様のツールです。
詳細については、こちらをご覧ください。
devenv
プロジェクトファイルが見つからないとエラーメッセージを書いたのに0を返すというケースに遭遇しました。対照的にmsbuild
、ゼロ以外の値を返しました。msbuild
エラーを見落とさないように、makefile を using に切り替えました。