2010-02-11 1 views
0

내 솔루션은 여러 개의 네이티브 C++/CLI 래퍼 및 관리 라이브러리/어셈블리로 구성됩니다. 래퍼 프로젝트는 다른 네이티브 DLL 프로젝트를 참조합니다. 네이티브 종속성의 .cpp 파일에서 구현 세부 사항을 변경할 때마다 모든 CLI/.NET 프로젝트가 다시 빌드됩니다 (링크되지 않고 다시 컴파일 됨). 이것은 디버그 구성에서 발생합니다 (전체 프로그램 최적화 없음). 이 문제가 발생하는 이유는 무엇입니까? 솔루션이 상당히 크기 때문에 재구성 작업에는 많은 시간이 걸리므로 VS가 불필요한 재 구축을 피하면 좋을 것입니다.VS2005는 .cpp 파일의 구현 세부 사항 변경시 .NET/CLI 프로젝트를 다시 작성합니다.

답변

1

이것은 예상되는 동작입니다. .NET 어셈블리는 관리되지 않는 DLL에 "의존"하며 DLL이 변경되면이를 감지하고 다시 빌드합니다. 관리되지 않는 C++ 프로젝트의 컴파일 단위는 .cpp 파일입니다. .NET 어셈블리의 컴파일 단위는 전체 어셈블리입니다. 하나의 .cs (또는 managed C++) 파일을 다시 컴파일 할 방법이 없습니다.

이 문제를 해결하려면 :: GetProcAddress()를 사용하여 관리되지 않는 DLL의 작업에 대한 함수 포인터를 가져올 수 있습니다. 그런 다음 관리되지 않는 DLL의 .lib 파일에 대한 .NET 어셈블리의 종속성을 제거 할 수 있으며 .lib가 변경 될 때마다 더 이상 다시 컴파일하지 않습니다.