コマンドラインからVisual Studioプロジェクトをコンパイルするにはどうすればよいですか?


112

MonotoneCMake、Visual Studio Express 2008、およびカスタムテストを使用している大規模なC ++ソリューションのチェックアウト、ビルド、配布、テスト、およびコミットサイクルをスクリプト化しています。

他のすべての部分は非常に単純明快に見えますが、GUIを取得せずにVisual Studioソリューションをコンパイルする方法はわかりません。

スクリプトはPythonで記述されていますが、os.systemを呼び出すだけでよい答えが返されます。

回答:


116

私はそれを行う2つの方法を知っています。

方法1
最初の方法(私が好む)はmsbuildを使用することです:

msbuild project.sln /Flags...

方法2次
も実行できます。

vcexpress project.sln /build /Flags...

vcexpressオプションはすぐに戻り、出力を出力しません。それがスクリプトに必要なものかもしれません。

DevEnvはVisual Studio Express 2008と一緒に配布されないことに注意してください(私が最初に同様の問題を抱えていたときに、それを理解しようと多くの時間を費やしました)。

したがって、最終結果は次のようになります。

os.system("msbuild project.sln /p:Configuration=Debug")

msbuildとvcexpressはデフォルトではシステムパスにないため、環境変数が正しいことを確認する必要もあります。Visual Studioビルド環境を起動してそこからスクリプトを実行するか、Pythonでパスを変更します(os.putenvを使用)。


これはVisual Studio 2010 Expressにも適用されます。
Samuel Harmer

msbuildがVS 2008に同梱されていないようです
Lucky Luke

46

MSBuildは通常は機能しますが、以前は問題に遭遇しました。あなたはより良い運を持っているかもしれません

devenv YourSolution.sln /Build 

MSBuildはVisual Fortranプロジェクト(* .vfproc)では機能しません。devenvに向けてくれてありがとう。
Maik Beckmann、

私は使用する必要があります:devenv YourSolution.sln / Buildですが、うまくいきました。
ボブワー

7
また、設定を指定することができますdevenv YourSolution.sln /Build Debug
ジョシュStribling

よく働く。以下のコマンドを使用して再構築を行うこともできますdevenv YourSolution.sln /rebuild
Abhineet

1
また、1つのスペースの後にデバッグまたはリリースを追加するだけで、リリースまたはデバッグモード用に再構築できます。例:devenv YourSolution.sln /rebuild releaseまたはdevenv YourSolution.sln /rebuild debug
Abhineet 2013年

20

正直なところ、2セント追加する必要があります。

msbuild.exeでそれを行うことができますmsbuild.exeには多くのバージョンがあり ます

C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ msbuild.exe C:\ Windows \ Microsoft.NET \ Framework64 \ v3.5 \ msbuild.exe C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe
C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ msbuild.exe C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild.exe

必要なバージョンを使用してください。基本的には最後のものを使用する必要があります。

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe

だからそれを行う方法。

  1. コマンドウィンドウを実行する

  2. msbuild.exeへのパスを入力します

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe

  1. 次のようにプロジェクトソリューションへのパスを入力します

「C:\ Users \ Clark.Kent \ Documents \ visual studio 2012 \ Projects \ WpfApplication1 \ WpfApplication1.sln」

  1. ソリューションパスの後に必要なフラグを追加します。

  2. Enterキーを押します

あなたがのようなすべての可能なフラグについての助けを得ることができることに注意してください

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe / help


6
msbuildの場所など、新しい開発者向けの詳細を追加した方法が本当に気に入っています
。– Ayushmati

8

msbuild他の人が指摘したように使用することは私にとってはうまくいきましたが、私はそれだけではなく、もう少しする必要がありました。まずmsbuild、コンパイラにアクセスできる必要があります。これを実行するには、次のコマンドを実行します。

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

その後msbuild、$ PATHになかったため、明示的なパスを介して実行する必要がありました。

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln

最後に、私のプロジェクトはのようないくつかの変数を利用していました$(VisualStudioDir)。それらは設定されmsbuildていないようですので、/propertyオプションで手動で設定する必要がありました:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln

その行により、最終的にプロジェクトをコンパイルできるようになりました。

ボーナス:コマンドラインツールは、「無料」のGUIベースのVisual Studio Communityエディションのように、30日間使用した後は登録を必要としないようです。マイクロソフトの登録要件が整っているため、そのバージョンはほとんど無料です。どちらかといえばフェイスブックとして無料...



3

DEVENVは多くの場合にうまく機能しますが、WIXPROJでWIXインストーラーをビルドすると、Outログの「CATASTROPHIC」エラーしか得られません。

これは機能します:MSBUILD /Path/PROJECT.WIXPROJ / t:Build / p:Configuration = Release

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.