2009-12-23 2 views
2

저는 여러 프로젝트가 포함 된 (네이티브 C++) Visual Studio 솔루션을 보유하고 있으며 그 중 일부는 DLL입니다. 서로 프로젝트의 종속성은 "프로젝트 종속성"에 공급됩니다. 이 변경 사항이 다른 프로젝트에 영향을 주는지 여부에 관계없이 DLL이 변경되고 다시 빌드 될 때마다 (즉, 구현이 아니라 선언 만 변경됨) 해당 DLL의 전체 종속성 트리가 다시 연결됩니다. 종속 프로젝트가 빌드 후보로 빌드되거나 테스트 될 때마다 (재 컴파일되지 않음), 이것은 완전히 불필요합니다. 전체 재 연결 프로세스 전에 외부 VS에서 종속 프로젝트를 실행하면 정상적으로 실행됩니다.Visual Studio DLL 종속성으로 인해 불필요한 다시 연결이 발생합니다.

프로젝트가 크기 때문에이 전체 불필요한 프로세스에는 상당한 시간이 걸립니다. 이 문제를 해결할 방법이 있습니까?

답변

-1

이것은 솔루션을 "다시 빌드"할 때 일반적인 VS 동작입니다. 변경된 구성 요소를 "재 구축"하지 않고 "빌드"하는 것이 아니라 잘 수행해야합니다. 또는 변경되지 않은 프로젝트/DLL을 언로드 할 수 있습니다. VS를 다시 빌드하면로드 된 프로젝트 만 빌드되고 언로드 된 프로젝트는 무시됩니다. 나는 모든 프로젝트가 종속성 트리에 따라 컴파일 및 링크되어 당신이 솔루션을 재건 할 때, "컴파일을 다시 재 링크 VS 아니라"당신이 말할 때 무슨 뜻인지 모르겠어요

...

3

내가 무슨 말을하는지 이해했다면 DLL을 다시 작성하고 DLL을 사용하는 모든 것을 다시 연결한다는 불평을하는 것입니까?

이 말은 정확합니다. DLL을 변경했다면 DLL을 사용하는 모든 것을 다시 연결해야합니다. 나는 당신이 DLL 내부에서 구현을 바꿀 수 있고, 인터페이스를 동일하게 유지한다면 다시 링크 할 필요가 없다는 것을 알고있다. 그러나 대부분의 빌드 툴처럼 VC++는 변경 시간과 LIB의 시간 만 따라 간다. 파일이 확실히 변경되었으므로 안전하게 수행 할 수있는 유일한 작업은 다시 링크입니다.

이 문제가 발생하지 않으려면 프로젝트의 DLL이 아닌 DLL의 라이브러리의 고정 사본에 프로젝트 A가 필요합니다.

관련 문제