2009-12-21 7 views
31

Visual Studio (2008)에서는 프로젝트가 실행중인 경우에도 C++ 프로젝트의 사후 빌드 이벤트를 강제로 실행할 수 있습니다 - 지금까지?Visual Studio : 프로젝트가 최신 상태 인 경우에도 C++ 프로젝트 사후 빌드 이벤트 실행

특히 COM 인 프로세스 서버 DLL을 빌드하는 프로젝트가 있습니다. 이 프로젝트에는 "regsvr32.exe $ (TargetPath)"를 실행하는 빌드 후 단계가 있습니다. 이것은 "Rebuild"에서 잘 실행되지만, 프로젝트 소스가 변경된 경우에만 "Build"에서 실행됩니다.

변경하지 않고 "Build"를 수행하면 Visual Studio는 프로젝트가 최신 상태이며 아무 것도 수행하지 않는다고보고합니다. 즉, 빌드 후 이벤트가 실행되지 않습니다. 이 상황에서 이벤트를 강제로 실행할 수있는 방법이 있습니까? 이것은 DLL 자체가 최신이지만 등록 정보가 아닐 수도 있기 때문에 필요합니다.

답변

43

사용자 지정 빌드 단계 속성 페이지에서 사용자 지정 빌드 단계를 사용하여 실행할 배치 파일을 설정할 수 있습니다. 출력 설정에 지정된 파일을 찾을 수 없거나 구식 인 경우이 작업이 실행됩니다. 존재하지 않는 파일을 지정하기 만하면 사용자 정의 빌드 단계가 항상 실행됩니다. 출력 파일을 찾을 수 없으므로 프로젝트가 최신 상태 인 경우에도 실행됩니다.

+0

** 맞춤 빌드 단계 **에 대한 ** 출력 ** 설정이 표시되지 않습니다. ** ** Output # ** – bpeikes

+0

이 일반적인 개념을 사용하여 AfterBuild 대상에서 Exec을 사용하여

+0

오, 내, 어떻게 StackOverflow없이 알아야합니까?! 여기 MSDN에서 빌드 단계 및 빌드 이벤트의 실행 순서에 대한 몇 가지 추가 정보가 있습니다. https://msdn.microsoft.com/en-us/library/e85wte0k.aspx 제 경우에는 방금 " 빌드 이벤트 "를"사용자 정의 빌드 단계 "로 설정하고 존재하지 않는"출력 "에 파일 이름을 지정했습니다. 이렇게하면 프로젝트가 최신 상태 인 경우에도 사용자 지정 빌드 단계가 안정적으로 실행됩니다. – j00hi

0

등록 정보는 주로 .rgs 파일의 내용에 따라 결정됩니다. 파일이 변경되면 프로젝트가 빌드됩니다. COM 등록이 프로젝트를 더럽 히지 않고 어떻게 바꿀 수 있는지 잘 모르겠습니다. 귀하의 특정 상황에 대해 더 자세히 설명해 주시겠습니까?

+0

"COM 등록 정보가 최신이 아닐 수도 있습니다"라는 말은 레지스트리의 정보가 .rgs 파일의 정보가 아니라 변경되었을 수 있음을 의미합니다. post-build 단계에서 .rgs에 따라 레지스트리의 정보를 복원하고 싶습니다. – user200783