2008-11-05 2 views
1

msbuild를 사용하여 C++ 프로젝트를 빌드 중이고 '빌드 후 이벤트'를 표시하지 않으려합니다. 성공적으로 다음 속성을 시도한 :msbuild를 사용할 때 C++ '빌드 후 이벤트'가 표시되지 않습니다.

/property:PostBuildEvent= 
/property:VCPostBuildEventTool= 

아무 것도 차이가 및 게시 빌드 이벤트가 여전히 실행됩니다.

누구든지 msbuild를 사용하여 이러한 (및 잠재적으로 다른) 이벤트를 억제하는 방법을 알고 있습니까?

+0

이것은 C++ 프로젝트와 관련하여/p : PostBuildEvent = post 빌드 이벤트를 표시하지 않기 때문에 발생하는 문제입니다. – RobV

답변

3

나는 이것을 어떻게하는지 알아 냈다. 2 단계가 있습니다.

먼저 배치 파일을 사용하여 msbuild 프로세스를 시작하지 않으면 msbuild 프로세스를 호출하는 배치 파일을 만듭니다. 그런 다음 msbuild 프로세스를 호출하기 전에 배치 파일에 변수를 추가하십시오. 이런 식으로 뭔가 :

set ISFULLBUILD=True 
msbuild TFSBuild.proj >> BuildOutput.txt 

그런 다음, 당신이 변수가 설정하거나 잘못된 값이되지 않는 경우에만 무언가에 포스트 빌드 이벤트를 수정해야합니다이 경우

IF NOT '%ISFULLBUILD%'=='True' copy /y $(TargetFileName) "..\..\..\..\..\..\Binaries\$(ConfigurationName)\" 

을 - TargetFileName (Whatever.dll)은 Visual Studio에서 빌드 할 때만 복사됩니다. 그러나 새 배치 파일을 사용하여 빌드하면 IF 문 다음에 명령이 실행되지 않습니다.

0

빌드 이벤트를 공백으로 설정해 보았습니까? "dir"과 같은 무언가로 덮어 쓰면 원래 빌드 후 단계가 여전히 실행됩니까?

가장 세련된 해결책은 아니지만 효과가있을 수 있습니다.

+0

나는 이것을 성공시키지 않았다. – Rob

0

Ack, 실제로 msbuild가 유연하지 않은 vcbuild를 호출하는 것처럼 보입니다. 그래서 나는 갇혀 있다고 생각합니다.

0

빌드 후 이벤트를 수정할 수있는 경우 환경 변수, 예 : SKIP_POST_BUILD_EVENTS을 사용하여이 작업을 수행 할 수 있습니다. 그런 다음 msbuild을 호출하기 전에 해당 환경 변수를 설정하고 해당 코드가있는 코드를 실행하기 전에 변수가 빌드 후 이벤트에 있는지 확인하십시오.

관련 문제