명령 줄에서 Visual Studio 프로젝트를 어떻게 컴파일합니까?


112

Monotone , CMake , Visual Studio Express 2008 및 사용자 지정 테스트를 사용하는 대규모 C ++ 솔루션에 대한 체크 아웃, 빌드, 배포, 테스트 및 커밋주기를 스크립팅하고 있습니다.

다른 모든 부분은 매우 간단 해 보이지만 GUI없이 Visual Studio 솔루션을 컴파일하는 방법을 알 수 없습니다.

스크립트는 Python으로 작성되었지만 os.system을 호출하면됩니다.

답변:


116

두 가지 방법을 알고 있습니다.

방법 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 사용 ).


이는 Visual Studio 2010 Express에도 적용됩니다.
사무엘 하머

msbuild를 VS 2008 출하하지 않는 것
럭키 루크

46

MSBuild는 일반적으로 작동하지만 이전에 어려움을 겪었습니다. 당신은 더 나은 행운을 가질 수 있습니다

devenv YourSolution.sln /Build 

MSBuild는 Visual Fortran 프로젝트 (* .vfproc)에서 작동하지 않습니다. devenv로 안내해 주셔서 감사합니다.
Maik Beckmann

나는 사용해야합니다 : devenv YourSolution.sln / Build하지만 정말 감사합니다.
bobwah

7
구성을 지정할 수도 있습니다.devenv YourSolution.sln /Build Debug
Josh Stribling 2012

잘 작동합니다. 아래 명령을 사용하여 재구성 할 수도 있습니다devenv YourSolution.sln /rebuild
Abhineet 2013 년

1
또한 하나의 공백 뒤에 디버그 또는 릴리스를 추가하여 릴리스 또는 디버그 모드로 다시 빌드 할 수 있습니다. 예 : devenv YourSolution.sln /rebuild release또는devenv YourSolution.sln /rebuild debug
Abhineet

20

솔직히 말해서 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


6
정말 당신은 MSBuild 등을 찾을 수있는 위치와 같은 새로운 개발자를위한 세부 사항을 추가 한 방법과 같은
Ayushmati

9

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 일 후에 등록이 필요하지 않은 것 같습니다. Microsoft 등록 요구 사항이 적용되면 해당 버전은 거의 무료입니다. 페이스 북에서 무료로 ...



3

DEVENV는 많은 경우에 잘 작동하지만 WIX 설치 프로그램을 빌드하기위한 WIXPROJ에서는 Out 로그에 "CATASTROPHIC"오류 만 표시됩니다.

이것은 작동합니다 : MSBUILD /Path/PROJECT.WIXPROJ / t : Build / p : Configuration = Release

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.