web-dev-qa-db-ja.com

バッチファイルから 'msbuild'コマンドを実行する方法

クリックしてVSプロジェクトからビルドを作成するバッチファイルを作成したいと思います。一日中、私は次の手順を実行します。

  1. 管理者としてcmdコンソールを開きます
  2. プロジェクト/ソリューションのパスに移動(CD ..、CDコマンドを使用)
  3. 次のコマンドを記述してビルドを作成します。

    msbuild mySolution.sln/p:configuration = debug

前にコメントしたように、このすべてのプロセスをワンクリックで実行したいと思います。それで、私はそれをするために.batファイルを作成しようとしています。

これは私のバッチファイルのコードです:

set location="C:\myPath\..\MyFolderSolution"
set pathMSBuild = "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"

@echo off
cls

call %pathMSBuild%
cd %location%
msbuild.exe "lucre.sln" /p:configuration=debug
pause

しかし、バッチファイルを実行しようとすると、次のエラーが発生します。「msbuild」は、内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。

それが可能かどうかを知るための手がかりまたは助け、可能であればそれを行う方法は非常に高く評価されます

よろしく!

20
MikePR

あなたは正しいディレクトリにいないので、msbuildがあるディレクトリにcdする必要があります。これを試してください:

set pathMSBuild="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\"
@echo off
cls
cd %pathMSBuild%
msbuild.exe "C:\myPath\..\MyFolderSolution\lucre.sln" /p:configuration=debug
pause

または、msbuildディレクトリをパスに追加して、setとcdの行をスキップすることもできます。

19
stevejoy32

どちらの回答もハードコーディングされたパスを使用しますが、これは常に機能するとは限りません。代わりにこれを使用してください:

@if exist "%VS100COMNTOOLS%vsvars32.bat" call "%VS100COMNTOOLS%vsvars32.bat"

変化する VS100他のどのバージョンにも、VSの多くのバージョンを同時にサポートするためにこれらの行を1つずつ配置することもできます。

@if exist "%VS100COMNTOOLS%vsvars32.bat" call "%VS100COMNTOOLS%vsvars32.bat"
@if exist "%VS140COMNTOOLS%vsvars32.bat" call "%VS140COMNTOOLS%vsvars32.bat"

このようにすると、特定のバージョンの.Net FrameworkまたはVisual Studioに依存しなくなります。

3
Archeg

Msbuildインストールディレクトリにcdしたくない場合は、次のようにVisual Studio環境変数をロードすることもできます。

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

(これも参照 質問

2
Vertigo

MSBuild.exeが配置されているディレクトリをPATH環境変数に追加して、msbuildをどこからでも呼び出すことができます。

したがって、batファイルでは次のようになります。

cd C:\PathToSoultion\
msbuild TheSolutionName.sln /p:configuration=debug
pause

問題がすでに数年先にあることは知っていますが、これが誰かの助けになることを願っています。

2
johnsabre