2011-02-10 5 views
10

내가이 질문을하기 전에 물어되었다는 것을 깨닫게 -하지만 답변 아무도 내 특정한 경우에 적용되지 않습니다 : 내가 네이티브 C를 포함하는 솔루션을비주얼 스튜디오 : 복사 종속 DLL이 대상으로 폴더

  • ++ EXE 프로젝트 40 + 네이티브 C++ DLL 프로젝트 (같은 솔루션에서)에 의존합니다.

  • EXE 파일 프로젝트 디버그, 출시 (및 프로필) 일반적인 구성을 가지고 있지만, 그 이후 동일한 소스 코드베이스는 세 가지 응용 프로그램을 구축하는 데 사용됩니다 (예를 들어 A1, A2A3). 또한 x32 및 x64를 대상으로하므로 총 3 x 3 x 2 = 18 개의 프로젝트 구성이 필요합니다.

  • 는 DLL 프로젝트는 세 타깃 애플리케이션 공유하므로 (디버그, 릴리스, 프로필) 2 배 (X32, 64) = 6의 구성은 3 존재한다.

  • EXE 프로젝트는 DLL에 따라 다르므로 수정 될 때마다 DLL 프로젝트의 관련 출력을 대상 폴더 (또는 그 하위 폴더)에 복사해야합니다.

어떻게 DLL을 업데이트 하시겠습니까? 이 의 관련 출력 폴더 A1, A2A3에 DLL을 복사해야하는 것처럼

  • 각 DLL 프로젝트에서 빌드 후 작업은, (잘) 작동하지 않습니다. 출력 폴더가 변경되면 50 개의 DLL 프로젝트 각각에서 빌드 후 작업을 수정해야합니다.

  • 현재 DLL 자체를 프로젝트 항목으로 EXE 프로젝트에 추가하고 사용자 지정 빌드 도구를 구성하여 출력 폴더에 복사했습니다. 하지만 각 DLL을 6 번 추가해야하므로 6 x 50 = 300 DLL로 끝납니다!

정말 필요한 것은 로컬 복사 옵션과 같지만 불행히도 어셈블리 만 작동합니다. 이 빌드 설정을 단순화하기 위해 솔루션을 제안합니까?

답변

5

나는 모든 DLL을 Debug/Release 등의 특정 폴더에 넣고 EXE의 해당 출력 폴더로 복사합니다.

는 두 개의 작업을 수행 할 수 있습니다

  • 모든 DLL이

  • 은 마우스 오른쪽 단추로 클릭하고 프로젝트를 선택 $(ConfigurationName)_$(PlatformShortName)

    • 같은 폴더에 모든 DLL이의 출력 디렉토리를 설정 -> propoterties
    • 모든 구성 및 모든 플랫폼 선택
    • outp 설정 유타 디렉토리
  • 는 복사 $(ConfigurationName)_$(PlatformShortName)\*.dll 편집

$(TargetDir)에 문제가 두 번째로이 모든 구성에, 일반적인 EXE 프로젝트에 빌드 후 작업을 추가 귀하의 EXE의 $(ConfigurationName)가 귀하의 DLL 프로젝트와 동일하지 않기 때문에 단계입니다. 확신 할 수는 없지만 어쩌면 18 개의 모든 구성에 대해 단일 빌드 후 이벤트를 유지하기 위해 해당 구성을 추론 할 수있는 방법이있을 수 있습니다. 그것은 새로운 질문이 될 수 있습니다 :)

+0

우수! 왜 전에 생각하지 않았어? –

+0

당신이 좋아 기쁘다 :) 문제에 대한 편집을 참조하십시오 ... – CharlesB

+0

예, 눈치 챘습니다. 그러나 그것은 관리가 가능합니다. 이는 단지 세 가지 다른 빌드 후 작업이 있다는 것을 의미합니다. –