2013-11-26 6 views
1

"유틸리티"프로젝트에 대한 참조가있는 프로젝트가 있습니다. "유틸리티"프로젝트는 세 번째 프로젝트를 참조합니다. 모두 네임 스페이스가 같지만 기본 프로젝트에서 "OurNamespace.Utilities.3rdProject"를 사용할 수 없습니다.기본 프로젝트의 참조 네임 스페이스

다른 모든 새 프로젝트가 "유틸리티"프로젝트를 참조하고이를 통해 참조 된 다른 모든 네임 스페이스에만 액세스 할 수 있도록 유지해야합니다. 모든 프로젝트에 모든 참조를 포함 할 수는 없습니다.

/편집 (그것을 폭포 종류의)

주 프로젝트 (참조 유틸리티) - 유틸리티 - 주 프로젝트에서 유틸리티

에 의해 참조 같은 네임 스페이스와 프로젝트, 지금 할 수 있어야합니다 유틸리티 참조 내에서 참조되는 프로젝트의 네임 스페이스에 액세스 할 수 있지만 기본 프로젝트에만 독점적으로 추가하지는 않습니다.

편집 "프로젝트 1"참조 유틸리티

using Utilities.Namespace1; 

이 유틸리티 내에서 다른 프로젝트가 Namespace2

내가 원하는

과 참조에 지금

using Utilities.Namespace2; 
"프로젝트 1"에서 Namespace2에 액세스

예전없이 "Project 1"의 양쪽 모두를 참조하십시오. 유틸리티를 참조하는 여러 프로젝트가있는 것을보고

+0

무엇이 정확한 문제입니까? –

+0

나는 네가 직면 한 문제가 무엇인지 모르겠다. 네가 네임 스페이스가있는 프로젝트를 참조하고 부모 네임 스페이스를 포함하지 않겠다고 말하는 것입니까? – Tweety

+0

"유틸리티"프로젝트 (세 번째 프로젝트의 참조가 있음) 만 참조하여 주 프로젝트에서 세 번째 프로젝트의 네임 스페이스를 참조 할 수 없습니다. – user3036342

답변

0

다른 어셈블리에서 어셈블리의 구성 요소를 직접 사용하려면 참조가 필요합니다. '직접'은 강력한 형식의 의미입니다 (예 :

).
  • 다른 어셈블리에서 유형의 인스턴스 만들기.
  • 다른 어셈블리의 유형 인스턴스를 처리합니다.

반면에 "간접적 인"사용은 유틸리티 어셈블리가 백그라운드에서 세 번째 프로젝트의 구성 요소를 사용하지만이를 게시하지 않는 것입니다. 공공 재산, 공공 방법론 등을 통해
어셈블리 및 네임 스페이스에 대해 자세히 설명합니다. 하나는 네임 스페이스가 아니라 어셈블리를 참조합니다. 네임 스페이스는 형식 이름을 고유하게 만드는 용도로만 사용됩니다. 네임 스페이스와 어셈블리 이름은 기술적 관점에서 서로 완전히 독립적입니다 (어셈블리 이름으로 네임 스페이스를 시작하는 것이 좋습니다). 따라서 두 어셈블리에서 동일한 네임 스페이스를 사용하더라도 어떤 방식 으로든 상황을 변경하지는 않습니다. 다른 어셈블리 유형을 사용하려면 여전히 참조가 필요합니다. 문제를 해결하기 위해
, 당신은 3 프로젝트에 대한 참조를 추가 할 수 있습니다 또는 당신이 할 수없는 경우, 다음 중 하나를 수행합니다

  • 필요한 기능에 대한 유틸리티 어셈블리에 래퍼를 추가하기 3 번째 프로젝트 유틸리티 어셈블리에 대한 참조가 이미 있으므로 3 차 프로젝트 유형에 직접 액세스하지 않는 한 이러한 래퍼에 액세스 할 수 있습니다.
  • 래퍼를 포함하는 다른 중간 프로젝트를 만들고이를 참조하십시오.
+0

감사합니다. 어떻게 3 차 프로젝트의 래퍼가 생겼습니까? 이 경우 Dapper.NET을 내 유틸리티 프로젝트에서 참조하는 제 3 프로젝트로 사용하고 있습니다. 내가 제안한 효과에 대해 글쓰기를 시도했지만, 액세스하고자하는 원래 코드의 기능을 버리는 것의 영향에 대해서는 – user3036342

+0

답변으로 제안을 표시했습니다. 기능을 삭제하는 대신 시간이 지남에 따라 확장해야하는 래퍼를 만들었습니다. – user3036342