0
API 클래스 라이브러리를 개발 중이며 일부 외부 라이브러리를 사용해야합니다. log4net, 화합 등 내가이 라이브러리를 참조 할 때 내 API의 클라이언트는 다른 라이브러리와 동일한 라이브러리를 참조하는 데 문제가 있습니다. ILMERGE 사용없이이 참조를 '비공개'로 만들 수있는 방법은 무엇입니까?C# 클래스 라이브러리 종속성 충돌
API 클래스 라이브러리를 개발 중이며 일부 외부 라이브러리를 사용해야합니다. log4net, 화합 등 내가이 라이브러리를 참조 할 때 내 API의 클라이언트는 다른 라이브러리와 동일한 라이브러리를 참조하는 데 문제가 있습니다. ILMERGE 사용없이이 참조를 '비공개'로 만들 수있는 방법은 무엇입니까?C# 클래스 라이브러리 종속성 충돌
'비공개 참조'와 같은 것은 없습니다.
.NET 런타임은 어셈블리를 응용 프로그램 도메인에 한 번만로드하고 버전이 아닌 이름으로 만 구별합니다. 따라서 병합 된 모든 코드가 실제로 특정 라이브러리의 동일한 버전을 사용하고 있는지 확인하거나 적절한 경우 Assembly Version Redirects (요소를 통해 app.config
요소 사용)을 사용하여 다른 버전을 허용해야합니다.
나는 log4net을 dll에 병합했고이 버전의 동일한 dll로 형제를 참조했다. 그리고 vs는 ILOG의 타입이 무엇인지를 (어셈블리로부터) 이해할 수 없습니다. 이것을 리디렉션 할 수 있습니까? – deeptowncitizen
먼저 어셈블리에서 타사 라이브러리를 병합하고 다른 어셈블리에서 다른 버전의 라이브러리를 참조해야합니다. 이것은 매우 중복되고 나쁜 설계입니다. 그러나 절대적으로 필요한 경우,'ILog' 사건을 완전히 한정 시키거나 적절한'namespace' 별칭을 정의 할 수 있습니다. –
문제는 내가 병합 해킹 등 때문에 서로 충돌이 2 외부 DLL을 사용하고 있습니다.이 specflow 프로젝트,이 dll을 참조합니다. 나는 무엇이든 변경할 수 없다.) – deeptowncitizen