2010-04-28 8 views
26

Visual Studio에서 설정하는 MSBuild 속성이 있습니까? Visual Studio의 버전 (있는 경우)에 따라 조건부 동작이 필요합니다.MSBuild에서 Visual Studio에서 실행 중인지 확인할 수 있습니다

+0

이전 게시물에 대한 답변을 보았습니까? http://stackoverflow.com/questions/2499253/msbuild-how-to-set-condition-using-a-condition-stored-in-a-property – used2could

+0

은 이전 VS 버전에서 없어지지 만 새로운 프로젝트 파일에는 없습니다. 완전히 무시하십시오. – dan

답변

34

사용해야하는 속성 값은 BuildingInsideVisualStudio입니다. Visual Studio를 빌드 할 때이 속성은 true로 설정됩니다. ProductVersion은 프로젝트 파일에서 선언 되었기 때문에 VS 내부에 빌드하거나 msbuild.exe를 통해 빌드 할 때와 동일한 값을 가지므로 사용할 수 없습니다.

+3

여기에 문서 : http://msdn.microsoft.com/en-us/library/ms171468(en-us).aspx. –

+0

콘솔에서 devenv.com을 실행하는 경우에도이 등록 정보가 사용 가능하므로주의하십시오. –

0

예, <ProductVersion>은 프로젝트 파일에 나열됩니다. Visual Studio 버전 번호와 일치합니다.

+0

내 의견을 참조하십시오. –

0

<ProductVersion>은 빌드 프로세스를 실행중인 MSBuild 버전을 제공합니다.

빌드 프로세스가 .Net 4.0 또는 3.5 중 하나를 대상으로 할 수 있음을 유의하십시오. 조건부 컴파일이 msbuild 버전 자체 또는 빌드 대상 프레임 워크 및 빌드 도구에 의존하는지주의 깊게 고려해야합니다 사용. 조건이 대상 프레임 워크를 기반으로하는 경우 <TargetFrameworkVersion>을 사용하십시오.

물론 빌드가 VS 2008에서 실행될 수도있는 경우 <TargetFrameworkVersion>이 누락 된 경우 적절한 폴백을 지원해야합니다.

1

제목에서 질문에 직접 답하십시오 - VS에서 빌드되었는지 알고 싶다면 true 또는 false을 적절하게 반환하는 IsDesktopBuild의 값을 확인하십시오.

+2

이것은 TFS에만 적용됩니다. –

+0

@Sayed 감사합니다. TFS에서 MSBuild 만 사용했기 때문에 분할 지점이 어디인지 알 수 없습니다! – AakashM

관련 문제