2014-01-09 2 views
0

API 클래스 라이브러리를 개발 중이며 일부 외부 라이브러리를 사용해야합니다. log4net, 화합 등 내가이 라이브러리를 참조 할 때 내 API의 클라이언트는 다른 라이브러리와 동일한 라이브러리를 참조하는 데 문제가 있습니다. ILMERGE 사용없이이 참조를 '비공개'로 만들 수있는 방법은 무엇입니까?C# 클래스 라이브러리 종속성 충돌

답변

0

'비공개 참조'와 같은 것은 없습니다.
.NET 런타임은 어셈블리를 응용 프로그램 도메인에 한 번만로드하고 버전이 아닌 이름으로 만 구별합니다. 따라서 병합 된 모든 코드가 실제로 특정 라이브러리의 동일한 버전을 사용하고 있는지 확인하거나 적절한 경우 Assembly Version Redirects (요소를 통해 app.config 요소 사용)을 사용하여 다른 버전을 허용해야합니다.

+0

나는 log4net을 dll에 병합했고이 버전의 동일한 dll로 형제를 참조했다. 그리고 vs는 ILOG의 타입이 무엇인지를 (어셈블리로부터) 이해할 수 없습니다. 이것을 리디렉션 할 수 있습니까? – deeptowncitizen

+0

먼저 어셈블리에서 타사 라이브러리를 병합하고 다른 어셈블리에서 다른 버전의 라이브러리를 참조해야합니다. 이것은 매우 중복되고 나쁜 설계입니다. 그러나 절대적으로 필요한 경우,'ILog' 사건을 완전히 한정 시키거나 적절한'namespace' 별칭을 정의 할 수 있습니다. –

+0

문제는 내가 병합 해킹 등 때문에 서로 충돌이 2 외부 DLL을 사용하고 있습니다.이 specflow 프로젝트,이 dll을 참조합니다. 나는 무엇이든 변경할 수 없다.) – deeptowncitizen