2010-12-07 4 views
14

다른 버전의 log4net.dll에 의존하는 두 가지 라이브러리가 있습니다. 내 bin 폴더에서 dll을 모두 사용하면 타사 프로그램을 호출 할 때 일반적인 오류가 발생합니다.제 3 자 라이브러리는 다른 버전의 log4net.dll을 참조합니다.

파일 또는 어셈블리 'log4net, 버전 = 1.2.10.0, Culture = neutral, PublicKeyToken = 1b44e1d426115821'을로드 할 수 없습니다. 또는 종속성 중 하나가 될 수 있습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

응용 프로그램에서 dll을 모두 참조 할 수있는 방법이 있습니까? 제 3 자 dll은 윈저의 IOC 컨테이너와 페이팔의 API이며,이 애플리케이션에 모두 중요합니다.

+0

는 여기 사지에 밖으로거야하지만 난 당신이 심지어 코드를 소유하지 않고 어셈블리를 ILMerge 수 있다고 생각이 그 문제를 면제한다. –

답변

9

이 질문에 도움이되는 답변이있을 수 있습니다. 이 log4net하지 윈저 자체에 의존 윈저의 로깅 시설의 경우

Referencing 2 different versions of log4net in the same solution

또는, 당신은 페이팔 API에 의해 사용 log4net의 버전에 따라 자신의 log4net 추상화를 쓸 수와 말할 수있다 대신 윈저가 그걸 사용 했어. 여기

캐슬의 소스 코드 저장소의 log4net 추상화의 위치입니다 : 나는 내가 얼마나 당신의 자신의 log4net 추상화를 참조하도록 구성하는 방법을 말할 수 없다 성을 사용하지 않는 https://github.com/castleproject/Castle.Core/tree/master/src/Castle.Services.Logging.log4netIntegration

,하지만 난 그것을 내기 가능하다면 너무 어렵지 않다.

여기 log4net을 사용하여 성을 구성하는 것을 설명하는 SO의 다른 게시물에 대한 링크입니다. 또한 사용자 지정 로깅 로깅 기능을 쓰기에 대해 간략하게 이야기 :

Logging with Castle.Facilities.Logging and log4net

행운을 빕니다!

+0

감사합니다. 첫 번째 링크가 작동했습니다! log4net.dll에 대한 모든 프로젝트 참조를 제거하고 app/web.config를 사용하여 다른 버전에 대한 런타임 참조를 작성하면 응용 프로그램이 불일치에 대한 불평없이 dll을 모두 찾을 수있었습니다. 자세한 내용은 wageoghe의 "동일한 솔루션에서 log4net의 두 가지 버전 참조"링크를 참조하십시오. –

1

다른 길로 가야 겠지만 나는 결코 그 일을하지 않고 GAC에 넣고 있습니다.

GAC에서 동일한 dll의 다른 버전을 사용할 수 있다고 생각합니다. 괜찮을 것입니다.

그러나 나는 또한 미친 수 있습니다 :

+3

네, 할 수는 있지만 이것은 훌륭한 해결책은 아닙니다. – alexandrudicu

+1

확장 성 문제가 발생하면 모든 컴퓨터에서 GAC 설치를 수행해야합니다. .config 파일에 넣으면 응용 프로그램과 함께 배포 할 수 있습니다. –

관련 문제