2013-03-05 3 views
5

모든 프로젝트에 대해 실행해야하는 빌드 후 이벤트 명령 (bar)이 포함 된 공유 속성 시트가있는 Visual Studio의 솔루션이 있습니다. 프로젝트 별 이벤트를 추가 후 빌드> 빌드 이벤트Visual Studio에서 빌드 후 이벤트 상속?

Foo.props > 공통 속성> 빌드 후 이벤트> 명령 줄 = 바

어떻게 다음 지정합니까? 일반적으로 "부모 또는 프로젝트 기본값에서 상속"이 누락되어 있으므로 유지 관리가 어려워 짐에 따라 모든 단일 프로젝트에 수동으로 bar을 추가하지 않아도됩니다.

답변

2

post을 기반으로 할 수 없습니다. 얼마 전에 질문을 올렸습니다. 실현 가능한 대안을 찾을 수 있었습니까?


피드백 후 편집 :

<!-- CommandX.props --> 
<PropertyGroup> 
    <CommandX>bar</CommandX> 
</PropertyGroup> 

그런 다음 프로젝트 또는 다른 빌드 후 명령에 $(CommandX)을 추가 할 수 잠재적으로 지저분한 대안이 될 것 는 매크로로 명령을 정의 할 수 속성 시트. $(CommandX)이 없으면 자동으로 무시됩니다. 빌드에 대해 좀 더 학습 후

<!-- Some-Other-Property-Sheet.props --> 
<ImportGroup Label="PropertySheets"> 
    <Import Project="CommandX.props" /> 
</ImportGroup> 

: 다른 속성 시트에이 매크로를 추가하면 값을 상속 $(CommandX) 있도록

, 당신은 ImportCommandX 속성 시트이있을 것이다 프로세스, 나는 사용을 권장하고 싶습니다 MSBuild tasks; 특히 Exec task이 가장 적합한 솔루션을 제공 할 수 있습니다.

+0

아니요, 저는 제 질문에 따라 모든 프로젝트를 개별적으로 개별적으로 유지 관리해야했습니다. 내가 생각한 (그러나 구현하려고 시도하지 않은) 유일한 해결책은 스크립트를 통해 내 자신의 상속 구조를 설계하는 것입니다. 모든 프로젝트에서 빌드 후 이벤트와 동일한 스크립트를 호출하고 프로젝트 이름을 변수로 전달하고 스크립트 적절한 추가 명령을 실행하십시오. Clunky,하지만 적어도 하나의 파일 만 유지 관리하는 것을 줄일 수 있습니다. – JBentley

+0

또는 각 프로젝트가 자신의 스크립트 (MSVC의 내장 매크로를 사용하여 프로젝트 종속 위치에서 스크립트를 호출 함)를 호출하고 스크립트가 상속받은 프로젝트에서 스크립트를 재귀 적으로 호출하도록합니다. 두 가지 방법 모두의 주된 문제점은 상속 구조 자체를 두 곳 (속성 시트 및 스크립트)에서 업데이트해야하며, 그렇지 않은 경우 상속 구조가 동기화되지 않아야한다는 것입니다. – JBentley

13

이 솔루션을 찾고 다른 게시물을보고 나서. VC++ 팀이 왜이 기능을 사용하지 않을지 이해하는 것은 불가능하다는 것을 알게되었습니다.

속성 페이지의 매크로를 살펴본 후 % (명령) 매크로/환경 변수를 사용하여 이전 속성의 명령을 포함 할 수 있습니다. 이것은 모든 빌드 이벤트에 적용됩니다.

PropertySheet1.props

copy some.dll $(OutputPath) 
%(Command) 

PropertySheet2.props

모든 명령에
copy other.dll $(OutputPath) 
%(Command) 

결과가 실행되는 것을 확인할 수 있습니다.

+0

완벽하게 작동합니다. 고마워! – Bklyn

0

일부 빌드 후 이벤트가 정의 된 속성 시트에서 상속받지 못했기 때문에 나는 오리에게 질문을하고 여기에 착륙했습니다.

는 좋은 소식이 있습니다 비주얼 스튜디오 2013 년부터 사전 빌드 및 빌드 후 이벤트 명령 줄은 속성 시트에서 모든 이벤트를 추가 옵션 "부모 또는 프로젝트 기본값에서 상속"는 있습니다.

(Visual Studio 2013 및 2017 Professional에서 테스트 됨)

관련 문제