2009-03-03 3 views
20

Visual Studio를 통해 Test라는 구성을 만들었습니다. 현재 DEBUG 설정을 모두 사용하고 있지만 빌드가 TEST 일 경우 특정 작업을 결정하기 위해 컴파일러 조건을 사용합니다. DEBUG | RELEASE.Msbuild는 DEBUG | RELEASE 이외의 빌드 구성을 인식합니까?

그러나 어떻게하면 테스트 구성을 검색하기 위해 내 MSBUILD 스크립트를 얻을 수 있습니까 ?? @ (SolutionsToBuild)는 내 솔루션 인 경우

은 현재 내가
<MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=$(Configuration);OutDir=$(BuildDir)\Builds\" /> 

을 구축 할 수 있습니다. Common MsBuild Project Properties에서 $ (Configuration)은 일반적인 속성이지만 항상 공백으로 나타납니다.

이 설정은 결코 설정되지 않지만 단순히 내 사용을 위해 예약되어 있거나 DEBUG | RELEASE 만 감지 할 수 있음을 의미합니까? 그렇다면 다른 빌드 구성을 만들 수있는 요지는 무엇입니까? 내가 MSBUILD 구성 파일을 정의와 함께 많은 일을하지 않은하지만 짓을

답변

41

내가 비주얼 스튜디오 내부의 ReleaseNoUploads 구성을 정의이

msbuild /v:n /p:Configuration=Release "Capture.sln" 
msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln" 

같은 배치 파일을 사용하여 다른 구성의 구축합니다.

  • 엽니 다 도구 : 옵션 메뉴의 프로젝트 및 솔루션으로 이동 : 일반 옵션 및 를 확인 여기에

    내가 (이 비주얼 스튜디오 2005입니다) 그것을 위해해야 ​​할 일을했을거야 고급 빌드 구성 표시
    . 거기에서
  • 빌드로 이동하십시오 활성 솔루션 구성 풀다운을 클릭, 팝업 대화 상자에서 구성 관리자 메뉴
  • < 새로 만들기를 클릭 ... > 새로운 빌드를 만들 수 있습니다 구성.
+1

유일하게 염두에 두어야 할 점은 Pr 솔루션과 함께 빌드 구성을 실행하십시오. – Dean

+0

그게 무슨 뜻입니까? –

2

참고는 $ (구성)과 $는 (플랫폼)이 항상 상단에있는 드롭 다운에서 구성 관리자의 물건을 사용 VS에 의해 설정된다 '비주얼 스튜디오 내부'. 반면에 명령 행에서 msbuild를 사용하여이 값을 설정하려면 명시 적으로 값을 전달해야합니다 (@ MarkBiek의 응답과 같음).

(대다수의 VS 프로젝트 템플릿은 Configuration/Platform의 값을 기본값으로 사용하므로이 값을 명시 적으로 지정하지 않고 명령 줄 MSBuild를 사용할 수 있습니다.이 두 가지 유용한/공통 속성이 나타납니다. 그들이 실제로하는 것보다 조금 더 마법 적이거나 이상합니다.)

2

는 일반적으로 나는 모두가 하나의 MSBuild 스크립트에서 구축 릴리스 및 디버그를 위해 할 것입니다 : 각각 다음

<Target Name="configurations"> 
    <CreateItem Include="$(Configuration)"> 
     <Output TaskParameter="Include" ItemName="Configuration" /> 
    </CreateItem> 
    </Target> 

을 그리고 :

<PropertyGroup Condition="'$(Configuration)'==''"> 
    <Configuration>Debug;Release</Configuration> 
</PropertyGroup> 

그런 다음 MSBuild에서 비밀 소스하지만이 추가 목표는 다음과 같이하십시오 :

<Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target\%(Configuration.FileName)"> 
    <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" /> 
    </Target> 
관련 문제