2008-11-11 5 views
25

이것은 쉽게 발생하지만 멈추고 있습니다. Visual Studio에서 솔루션을 빌드 할 때 - Visual Studio 콘솔에서 동일한 빌드를 수행 할 수 있도록 현재 빌드 명령에 대한 정확한 cmd 행을 추출하는 방법은 무엇입니까?VS 솔루션에 대한 cmd 라인 빌드 명령을 얻는 방법은 무엇입니까?

출력 창에서 솔루션 빌드 명령의 단일 프로젝트를 볼 수 있지만 전체 솔루션의 프로젝트는 볼 수 없습니다.

저는 VS2005입니다.

도움이 필요하십니까

답변

13

@ JohnIdol이 정확하게 말한 것 외에, VS 환경 변수를 설정해야한다는 것을 알았습니다. 나는 배치 파일의 이름을 내 앞에서 가지고 있지 않지만, 그것을 사용하거나 수정한다고 생각할 수 있습니다. 그것은 어딘가에 VS 프로그램 파일 트리에 있습니다. 또한, 표준 셸이 아니라 일부 경로 등의 .NET 설치 셸에 있어야한다는 것을 기억합니다. 나중에 VS가 설치된 Windows PC에서 세부 사항을 추가하겠습니다.

EDIT : 언급 한 배치 파일은 ProgFiles 메뉴의 바로 가기입니다. 그 속성의 세부 사항은 다음과 같습니다.

여기 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 
+0

이 정말 감사합니다 – JohnIdol

3

명령 줄에서 msbuild를 시작할 수 있습니다. msbuild는 .sln (솔루션) 파일을 인식합니다. 명령 줄에서 .sln 파일과 빌드 구성 (디버그, 릴리스 등)을 지정할 수 있습니다.

http://msdn.microsoft.com/en-us/library/ms164311.aspx
다음은 msbuild로 수행 할 수있는 작업에 대한 설명서입니다. MSBuild.exe는 Visual Studio가 아닌 .NET Framework와 함께 설치됩니다.

나는 조금만 찾았고 devenv를 사용하여 Visual Studio로 명령 줄 빌드를 할 수 있다는 것도 발견했습니다. exe/build, more info here :
http://msdn.microsoft.com/en-us/library/xee0c8y7(VS.80).aspx

+0

더 깊이 정보의 링크에 내 게시물을 편집 : 여기

은 내 솔루션은 Bejoy의가 (.BAT 파일이 솔루션의 일부인 설치 루트 폴더에있는 점을 고려)을 기반으로합니다. – Mendelt

+0

감사합니다 - 특정 명령 줄 (매개 변수 VS msbuild 실행할 ​​때 사용하는 방법에 대한 자세한 찾고 있었다) – JohnIdol

3

당신은 VS에서 제공하는대로 정확한 명령 행 (그것을 해결하기보다는) 다음 파일에 모든 매개 변수를 출력 자신의 콘솔 응용 프로그램으로 MSBuild.exe를 교체하려고 수를보고 싶다면 .

VS가 백그라운드에서 제공하는 것을 확인하기 위해 제공된 모든 환경 변수를 작성할 수도 있습니다.

19

프로그램 메뉴> Microsoft Visual Studio 2005> Visual Studio Tools>Visual Studio 2005 명령 프롬프트으로 이동하십시오.

이 명령 프롬프트에는 명령 줄 세션에 필요한 모든 .NET 환경 변수가 설정되어 있습니다. 당신은 당신의 솔루션 디렉토리로 디렉토리를 변경할 수 있습니다 (예를 들어, C : \ 프로젝트 \ mySolution) 및

Msbuild.exe mySolution.sln 

당신은 를 msbuild를/사용 가능한 다양한 옵션을 볼 수 있습니다 실행?

MSBUILD은 C에 위치하고 있습니다 : \ WINDOWS \ Microsoft.NET 프레임 워크 \ 2.0.50727 msbuild를 위에

\ /?빠른 옵션 확인을 위해 사용법에 대한 자세한 설명은 MSBuild Command Line Reference 페이지를 참조하십시오. 그리고 how to build specific targets in solutions.

+2

예 -하지만 정확히 어떤 옵션을 실행하는 데 사용되는 알아낼합니까? 수동 빌드? – JohnIdol

+0

더 많은 정보를 원하시면 편집하십시오. – icelava

+0

VS2010에서도 작동합니다. http://blogs.msdn.com/b/vcblog/archive/2010/01/11/vcbuild-vs-c-msbuild-on-the-command-line.aspx –

5

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" 
+0

하 ... 그 놀라운 점은 " 전화 "키워드는 행동을 바꿉니다! 내 역할에 어리석은 실수. 감사! –

+0

Visual Studio 2005에서도 작동하지만 vsvars32.bat 파일은 다음 위치에 있습니다. C : \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ Tools –

4

예를 들어 Bejoy에게 감사드립니다. 대부분의 매크로를 제거했기 때문에 설치 사전 빌드 이벤트에서 솔루션 재구성에 큰 문제가있었습니다. 이로 인해 많은 도움이되었습니다.

call "%VS100COMNTOOLS%\vsvars32.bat" 

devenv "%CD%\..\soulutionfile.sln" /build "Release" 
관련 문제