web-dev-qa-db-ja.com

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

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

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

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

102
John Mulder

私は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 を使用)。

109
Moses Schwartz

MSBuildは通常動作しますが、以前は困難に直面していました。あなたはより幸運があるかもしれません

devenv YourSolution.sln /Build 
42
Jeffrey Hantin

正直に言うと、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. COMMANDウィンドウを実行します

  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

17
Developer

他の人が指摘したように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日間は登録が不要なようです。マイクロソフトの登録要件が整っているため、そのバージョンはほとんど無料です。もしあれば、Facebookで無料...

6
josch

MSBuildはあなたの友達です。

msbuild "C:\path to solution\project.sln"
3
Adam Davis

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

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

2
peter.fr