none
MSBUILDとDEVENVの違い RRS feed

  • 質問

  • OSはWINDOWS 7, VISUAL STUDIO 2008 において

    Windows Froms アプリを作成しています。フレームワークは3.5を使用します。

    .slnがたくさんあるので、

    "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"

    もしくは

    "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"

    でコマンドプロンプトによりビルドしようとしています。

    この二つでビルドすることにおいて、どのような違いがあるのかを質問させて頂きたいです。

    例えば、devenvの場合は、Visual Studio 9.0のフォルダのものをはっきり指定できるのですが、

    MSBUILDの場合はVISUAL STUDIOの指定がないので、他のVISUAL STUDIO 2015(私の端末では最新)などでビルドするような感じのプロセスをたどったりしないかな等の違和感があったりします。

     


    2016年7月7日 1:24

回答

  • devenvについて:
    本業はIDEです。IDE上でビルド操作を行うと内部でMSBuildを起動しています。devenvがコマンドラインからもビルドが行えるのはこの機能を呼び出しているだけですので、ビルドを行いたいのであればMSBuildを使用すべきです。また.slnファイルと.csprojファイル、.vbprojファイルの編集機能も持ちます。

    MSBuildについて:
    本業はもちろんビルドを行うことです。.csprojファイル、.vbprojファイルの記述に従ってビルドを行います。.slnファイルについても扱えますが内部的に.projファイルに変換した上でビルドを行っているにすぎません。

    MSBuildの場所はリリース毎にころころ変わります。

    • VS2005であれば"C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe"
    • VS2008であれば"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe"
    • VS2010であれば"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
    • VS2012は…どこだろう? VS2010と同じかも。
    • VS2013であれば"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"…かな?
    • VS2015であれば"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"

    ところで、.slnは複数の.csporj、.vbprojを束ねるものですので、同時にビルドされるべきであろうものであれば、1つの.slnに含めてしまうべきです。

    VS2003以前およびVS2008以前のC++言語については上記の説明とは更に異なります。

    • 回答の候補に設定 星 睦美 2016年7月12日 7:49
    • 回答としてマーク 星 睦美 2016年7月15日 6:52
    2016年7月7日 2:57