2011-05-12 8 views
2

우리는 많은 프로젝트를 가진 해결책을 가지고 있습니다.C#과 C++/CLI 프로젝트 간의 순환 프로젝트 의존성 해결?

하나의 특정 경우에, 우리는 두 개의 프로젝트가 : ++ 코드 A와 일부 네이티브 C로 이동-사이에 작용하는 작업 2) C++/CLI 프로젝트의 대부분을 수행 1) AC# 프로젝트를

C# 코드는 C++ 래퍼로 호출됩니다. 모두 정상입니다.

그러나 우리가 끌어들이는 새로운 기능이 있습니다. C++ 래퍼 (프로젝트 # 2)의 관리 측면에서 프로젝트 # 1에있는 관리되는 C# 코드에는 몇 가지 정적 메서드가 필요합니다. 그러나 Visual Studio는이 두 프로젝트를 순환 프로젝트 참조로 불평 할 때 상호 연관시키지 않습니다. 그러나 클래스 참조가 없습니다.

3 단계 프로젝트를 중개자로 요구하지 않는이 문제에 대한 해결책이 있습니까?

+0

새로운 기능을 위해 dll (또는 하나 이상의 dll) 컴파일 ... 기본적으로 중개자를 만드는 속임수이지만 프로젝트는 아닙니다. – soandos

+0

예, 언급 한 것을 잊어 버렸습니다. 내부 자료에 대한 바이너리 참조를 허용하지 않기 때문에 어느 방식 으로든 프로젝트 참조가되어야합니다. – Joe

답변

5

당신은 A를 B에 의존시킬 수 있습니다. 간단히 말하면 A.EXE는 B.DLL에 의존한다고 말할 수 있습니다. 그런 다음 A가 처음 B를 호출 할 때 B에 정의 된 일부 유형 또는 인터페이스의 객체를 제공 한 다음 B가 돌아 서서 나중에 다시 A로 콜백 할 수 있습니다.

즉, B는 "나는 오직 A만이 할 수있는 것을 원하지만 구현하지 않습니다"와 같은 기본 클래스 또는 인터페이스를 정의합니다. 그런 다음 A가 그것을 구현하고, 그것을 당신에게 전달하고, 호출합니다. 이것은 세 번째 프로젝트가 없으면 순환 의존성을 해결합니다. 이는 관리되는 프로젝트 쌍에 적용됩니다.

관련 문제