web-dev-qa-db-ja.com

VSソリューションのコマンドラインビルドコマンドを取得する方法

これはおそらく簡単ですが、行き詰まっています:Visual Studioでソリューションをビルドするとき-VisualStudioコンソールから同じビルドを実行できるように、現在のビルドコマンドの正確なcmd行を抽出するにはどうすればよいですか?

出力ウィンドウでは、ソリューションのビルドコマンドで単一のプロジェクトを確認できますが、ソリューション全体のプロジェクトは確認できません。

VS2005にいます。

どんな助けでもいただければ幸いです

28
JohnIdol

@JohnIdolが正しく言うことに加えて、多数のVS環境変数を設定する必要があることがわかりました。私の目の前にはバッチファイルの名前はありませんが、変更したり、使用したりできます。 VSプログラムファイルツリーのどこかにあります。また、私が覚えているように、一部のパスなどでは、標準のシェルではなく.NETセットアップシェルにしたくない。 VSが搭載されたWindows PCで後で詳細を追加します。

編集:上記のバッチファイルは、ProgFilesメニューのショートカットです。プロパティの詳細は次のとおりです。

%comspec% /k ""C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat""x86"

これは、MSBuildを使用してソリューションを呼び出すバッチファイルです。

@echo off

:: setup VS2005 command line build environment
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
set VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC
set FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
set FrameworkVersion=v2.0.50727
set FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
set DevEnvDir=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Com
mon7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft
 Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual
 Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC
\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB

echo %0 %*
echo %0 %* >> %MrB-LOG%
cd
if not ""=="%~dp1" pushd %~dp1
cd
if exist %~nx1 (
        echo VS2005 build of '%~nx1'.
        echo VS2005 build of '%~nx1'. >> %MrB-LOG%
        set MrB-BUILDLOG=%MrB-BASE%\%MrB-WORK%.%MrB-NICEDATE%.%MrB-NICETIME%.build-errors.log
        msbuild.exe %~nx1 /t:Rebuild /p:Configuration=Release > %MrB-BUILDLOG%
        findstr /r /c:"[1-9][0-9]* Error(s)" %MrB-BUILDLOG%
        if not errorlevel 1 (
                echo ERROR: sending notification email for build errors in '%~nx1'.
                echo ERROR: sending notification email for build errors in '%~nx1'. >> %MrB-LOG%
                call mrb-email "Mr Build isn't happy about build errors in '%~nx1'" %MrB-BUILDLOG%
        ) else (
                findstr /r /c:"[1-9][0-9]* Warning(s)" %MrB-BUILDLOG%
                if not errorlevel 1 (
                        echo ERROR: sending notification email for build warnings in '%~nx1'.
                        echo ERROR: sending notification email for build warnings in '%~nx1'. >> %MrB-LOG%
                        call mrb-email "Mr Build isn't happy about build warnings in '%~nx1'" %MrB-BUILDLOG%
                ) else (
                        echo Successful build of '%~nx1'.
                        echo Successful build of '%~nx1'. >> %MrB-LOG%
                )
        )
) else (
        echo ERROR '%1' doesn't exist.
        echo ERROR '%1' doesn't exist. >> %MrB-LOG%
)
popd
15
kenny

[プログラム]メニュー> [Microsoft Visual Studio 2005]> [Visual Studioツール]>Visual Studio 2005コマンドプロンプトに移動します。

このコマンドプロンプトには、コマンドラインセッションに必要なすべての.NET環境変数が設定されています。ディレクトリをソリューションディレクトリ(例:c:\ projects\mySolution)に変更して実行できます。

Msbuild.exe mySolution.sln

msbuild /?を使用して、利用可能なさまざまなオプションを確認できます

MsbuildはC:\ Windows\Microsoft.NET\Framework\v2.0.50727にあります

Msbuild /?の上にクイックオプションチェックでは、使用方法の詳細について MSBuildコマンドラインリファレンス ページを参照できます。そして ソリューションで特定のターゲットを構築する方法

25
icelava

VS .NET 2003の場合、devenv.exeを使用して、コマンドラインからソリューション/プロジェクトをビルドできます。

devenv solutionfile.sln  /build solutionconfig

例えば。バッチファイルでの使用:

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"

devenv Tools.sln /build "Release"
7
Bejoy

VSが提供する正確なコマンドラインを確認したい場合は(それを実行するのではなく)、MSBuild.exeを、すべてのパラメーターをファイルに出力する独自のコンソールアプリに置き換えてみてください。

VSがバックグラウンドで提供するものを確認するために、提供されているすべての環境変数を書き出すこともできます。

5
David Sykes

例のBejoyに感謝したいだけです。セットアップの事前ビルドイベントでのソリューションの再ビルドで大きな問題が発生しました。これは、マクロのほとんどが削除され、これが非常に役立ちました。

以下は、Bejoyのソリューションに基づく私のソリューションです(.batファイルがソリューションの一部であるセットアップルートフォルダーにあることを考慮してください)。

call "%VS100COMNTOOLS%\vsvars32.bat"

devenv "%CD%\..\soulutionfile.sln" /build "Release"
4
crash

Msbuildはコマンドラインから起動できます。 msbuildは.sln(ソリューション)ファイルを理解します。コマンドラインから.slnファイルとビルド構成(デバッグ、リリースなど)を指定できます。

http://msdn.Microsoft.com/en-us/library/ms164311.aspx
msbuildで何ができるかに関するドキュメントです。 MSBuild.exeは、Visual Studioではなく.netフレームワークとともにインストールされます。 c:\ windows\Microsoft.net\framework\v3.5(またはv2.0.50727)にあります

私は少し検索したところ、devenv.exe/buildを使用してVisual Studioでコマンドラインビルドを実行することもできることがわかりました。詳細はこちら:
http://msdn.Microsoft.com/en-us/library/xee0c8y7(VS.80).aspx

3
Mendelt