2011-11-30 2 views
0

여러 프로젝트가있는 솔루션이 있습니다. MSBUILD를 사용하여 배포를 자동화하려고합니다. 을 빌드 할 때 다음과 같은 구성 값이 있습니다. 디버그 2. 릴리스 3. Dev 일부 프로젝트의 경우 DEV 구성의 릴리스 모드를 사용하고 있습니다. 그러나 MSBUILD 명령에서 DEV를 구성으로 사용하는 동안 DEV 구성을 찾을 수 없다는 예외가 발생합니다.지정된 구성이 제공되지 않을 때 MSBUILD 사용

MSBUILD에서 DEV를 구성으로 사용하는 경우 프로젝트에서 DEV를 사용할 수없는 경우 릴리스 모드를 사용하도록 MSBUILD에 알릴 방법이 있습니까?

감사 Ashwani는

답변

2

는 일반적으로 다음과 같습니다 라인이 :는 "데브"구성이없는 프로젝트의

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

, 당신은 행동을 얻을 수 있습니다 당신은 "데브"지정으로 빌드 할 때

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

이 방법으로,이 프로젝트는 솔루션의 구성 관리자의 동작을 모방하는 대신 자신의 릴리스 구성을 구축 할 것 ... 바로 그 일 전에, 또 다른 줄을 추가하여 원하는 (나는 이것을 가증 한 것으로 생각하는 경향이있다. 기능)을 프로젝트 파일 자체에 직접 저장할 수 있습니다.

또 다른 방법은 MSBuild 작업에 전달할 항목 배열에 대한 AdditionalProperties 메타 데이터를 사용하여 프로젝트를 빌드하는 것입니다. 를 지정할 수 있습니다 - 관심있는 프로젝트 - 다음 ...

<SolutionItem Include="./PathTo/SomeProject.csproj"> 
    <AdditionalProperties Condition="'$(Configuration)' == 'Dev'" 
     >Configuration=Release</AdditionalProperties> 
</SolutionItem> 

내가 구축 솔루션을 사용하는 경우

0

나는 그것이 MSBuild에 대한 명령 인수와 함께 할 수 있다고 생각하지 않습니다. Visual Studio 용 구성 관리자를 사용하고 솔루션 구성 'Dev'에 대해 'Dev'구성이없는 프로젝트를 릴리스하는 것이 좋습니다.

그런 다음 Dev 구성을위한 솔루션 빌드를 수행하고 일부 프로젝트는 릴리스로 빌드됩니다. 당신의 (아마도 C#을) 프로젝트 파일에서

+0

이 방법은 작동합니다 (책 "MSBuild에서 속임수"트릭 # 80에서 발췌) ,하지만 별도의 프로젝트와 종속 프로젝트 만 사용하고 있습니까? 이것이 달성 될 수있는 방법이 있습니까? –

관련 문제