문제

IDE에서 수행하는 Visual Studio 빌드를 명령줄에서 실행할 수 있는 스크립트로 어떻게 전환합니까?

도움이 되었습니까?

해결책

VS2008을 사용하면 다음을 수행할 수 있습니다.

devenv solution.sln /build configuration

다른 팁

\Windows\Microsoft.NET\Framework\[YOUR .NET VERSION]\msbuild.exe

명령줄 매개변수는 많지만 가장 간단한 것은 다음과 같습니다.

msbuild.exe yoursln.sln

가장 간단한 방법:솔루션이나 프로젝트 파일이 포함된 디렉터리로 이동하여 실행합니다. msbuild (Visual Studio 2005 이상이 있다고 가정).

보다 유연한 방법:

  • 계속 읽어보세요 MSBuild 참조.특히 설치 한 후에는 수많은 사용자 정의가 있습니다. MSBuild 커뮤니티 작업 프로젝트.
  • 사용 낸트.MSBuild보다 오랫동안 존재했으며 더 많은 커뮤니티 지원이 있지만 기존의 시각적 스튜디오로 만들어진 것을 확장하지 않고 처음부터 프로젝트 파일을 시작해야합니다.

낸트 그리고 MSBuild 빌드를 자동화하는 가장 인기 있는 도구입니다. .그물, 스택 오버플로 질문에서 각각의 장단점에 대한 토론을 찾을 수 있습니다. 최고의 .NET 빌드 도구.

빌드 도구 살펴보기 낸트 또는 MSBuild.저는 MSBuild가 Visual Studio 2005 이상용 빌드 도구라고 생각합니다.하지만 저는 NAnt의 팬입니다...

다음은 배치 스크립트를 통해 동일한 솔루션에 대한 x86 및 x64 구성의 명령줄 빌드를 완전히 자동화하는 데 사용하는 스크립트입니다.

이는 빌드에 설치 프로젝트가 있는 경우 작동하므로 DevEnv.exe를 기반으로 합니다(msbuild는 설치 프로젝트 빌드를 지원하지 않습니다).

귀하의 설정은 x86 네이티브 컴파일러와 x64 크로스 컴파일러를 사용하는 Visual Studio 2010 설정이 포함된 32비트 Windows 7이라고 가정합니다.64비트 Windows를 실행하는 경우 변경해야 할 수도 있습니다. x86_amd64 에게 amd64 설정에 따라 배치 스크립트에서.이것은 Visual Studio가 다음 위치에 설치되어 있다고 가정합니다. 프로그램 파일 귀하의 솔루션은 다음 위치에 있습니다. D:\MySoln

라는 파일을 만듭니다. buildall.bat 그리고 이것을 추가하세요:

D:
cd "D:\MySoln"

if "%1" == "" goto all
if %1 == x86 goto x86
if %1 == x64 goto x64

:x86
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
goto eof

:x64
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof

:all
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
if %ERRORLEVEL% NEQ 0 goto eof
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof

:eof
pause

이제 배치 스크립트를 2개 더 만듭니다.

크로스컴파일x86.bat x86 빌드의 릴리스 버전을 빌드하고 이를 포함하려면

devenv MySoln.sln /clean "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%

크로스컴파일x64.bat x64 빌드의 릴리스 버전을 빌드하고 이를 포함하려면

devenv MySoln.sln /clean "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%

이제 MySoln.sln과 함께 3개의 배치 파일을 모두 솔루션 폴더에 배치합니다.데스크탑에 다음 명령을 실행하는 바로가기를 만들어 x86 및 x64 릴리스 버전을 모두 빌드할 수 있습니다.

  • 모두 빌드 -> D:\MySoln\buildall.bat
  • x86 릴리스 전용 빌드 -> D:\MySoln\buildall.bat x86
  • x64 릴리스 전용 빌드 -> D:\MySoln\buildall.bat x64

AnyCPU 등과 같은 다른 구성을 사용하는 경우 그에 따라 위 스크립트를 사용자 정의해야 합니다.

UppercuT를 살펴보세요.그것은 귀하의 비용에 비해 많은 이점을 가지고 있으며 귀하가 찾고 있는 것 이상을 수행합니다.

UppercuT는 NAnt를 사용하여 빌드하며 사용하기 매우 쉬운 Build Framework입니다.

(1) 솔루션 이름, (2) 소스 제어 경로, (3) 대부분의 프로젝트에 대한 회사 이름만큼 쉽게 자동 빌드됩니다!

http://projectuppercut.org/

여기에 좋은 설명이 있습니다: 어퍼컷

다음은 내 배치 파일입니다. msbuild VS의 경우 2010 디버그 구성:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" 
iTegra.Web.sln /p:Configuration=Debug /clp:Summary /nologo

현재 비주얼 스튜디오 2005, 모든 프로젝트 파일(적어도 .NET 기반 프로젝트의 경우)은 실제 파일입니다. MSBuild 파일이므로 명령줄에서 MSBuild를 호출하고 프로젝트 파일을 전달할 수 있습니다.

결론은 다음과 같은 "빌드 스크립팅 언어"를 사용해야 한다는 것입니다. 낸트 또는 빌드 프로세스를 실제로 제어하려는 경우 MSBuild(다른 것도 있지만 현재는 이것이 주류임)를 사용합니다.

Visual Studio에서 C++ 프로젝트를 위해 이 작업을 수행해야 했습니다. 2003 그래서 이것이 Visual Studio의 최신 버전과 얼마나 관련이 있는지 모르겠습니다.

실행 파일이 생성된 디렉터리에는 BuildLog.htm 파일.브라우저에서 해당 파일을 열고 다음과 같은 각 섹션에 대해 엽니다.

Creating temporary file "c:\some\path\RSP00003C.rsp" with contents
[
/D "WIN32" /D "_WINDOWS" /D "STRICT" /D "NDEBUG" ..... (lots of other switches)
.\Project.cpp
.\Another.cpp
.\AndAnother.cpp
".\And Yet Another.cpp"
]
Creating command line "cl.exe @c:\some\path\RSP00003C.rsp /nologo"

대괄호 사이의 내용(대괄호 제외)으로 .rsp 파일을 만들고 원하는 대로 이름을 지정합니다.절대 경로에 문제가 있었던 것으로 기억하므로 모든 경로가 상대 경로인지 확인해야 할 수도 있습니다.

그런 다음 빌드 스크립트에서 다음의 명령줄을 추가합니다. BuildLog.htm 파일이지만 .rsp 파일 이름을 사용하십시오.

cl.exe @autobuild01.rsp /nologo

(cl.exe뿐만 아니라 link.exe 섹션도 있습니다)

보다 간단한 방법은 VS 2015 프로젝트 및 솔루션 구성을 변경하는 것입니다.도구 탭 -> 옵션 -> 프로젝트 및 솔루션 -> 빌드 및 실행 -> 프로젝트가 오래된 경우 실행 시(항상 빌드 선택)로 이동합니다.짜잔!

이제 프로젝트를 실행(F5)하면 IDE가 자동으로 프로젝트를 빌드합니다.이것이 도움이 되기를 바랍니다. 피드백을 환영합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top