2012-04-29 2 views
8

LinqToExcel 라이브러리를 사용하는 프로젝트를 빌드하려고합니다. 또한 log4net을 사용하여 로그를 작성합니다.log4net 어셈블리를로드하려고 할 때 오류가 발생했습니다.

내 문제는 내가이 코드 줄을 실행 tryomg있을 때 시작 :

var excel = new ExcelQueryFactory(ExcelPath); 
return (from r in excel.Worksheet<RowDetails>(company.Name) 
     select r).Count(); 

이 줄 발생한 예외 :

오류 MyProj.Program 홈페이지 : System.IO.FileLoadException : 수 파일 또는 어셈블리 'log4net, Version = 1.2.11.0, Culture = neutral, PublicKeyToken = 669e0ddf0bb1aa2a'또는 해당 종속성 중 하나를로드하지 않습니다. 어셈블리의 매니페스트 정의에 일치하는 어셈블리 참조가 일치하지 않습니다. (HRESULT에서 예외 : 0x80131040) 파일 이름 : 'log4net, 버전 = 1.2.11.0, 문화 = 중립, PublicKeyToken = 669e0ddf0bb1aa2a'

그것은 내가이 라인 전에 log4net 사용하는 것이 성공적인있어주의하는 것이 중요합니다.

어떤 도움을 주셔서 감사합니다.

고맙습니다.

+2

다른 버전의 log4net 어셈블리를로드하는 것처럼 보입니다. 파일 시스템에 여러 개의 log4net.dll이 있고 잘못된 파일이로드 될 수 있습니까? –

+0

나는이 동일한 문제가있다; 내 배포 프로젝트에서 서명이 일치하면 dll은 내 어셈블리와 동일한 디렉토리에 배포되지만이 오류가 발생합니다. 어쨌든 첫 번째 부분. –

+0

1.2.11+는 두 가지 맛이 있습니다. "이전 키"와 "새 키"는 새로운 키 풍미가 필요합니다. –

답변

6

marc_s가 지적했듯이이 문제는 대개 같은 어셈블리의 다른 버전을로드하려고 할 때 나타납니다. 프로젝트가 log4net에 종속적 인 LinqToExcel 라이브러리와 동일한 어셈블리 버전을 사용하는지 확인하십시오. 또한 다른 라이브러리는 동일한 어셈블리 버전을 사용해야합니다. 이 문제를 해결하기 위해, 당신은 또한 조립 사용과 같이 당신의 app.config에 재 시도 할 수 있습니다 :

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" /> 
     <bindingRedirect oldVersion="1.2.10.0" newVersion="1.2.11.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
6

시도가

Install-Package log4net -Version 2.0.0 

2.0.0은 log4net 1.2을위한 버전을 nuget 사용하여 설치합니다. 11

1

비슷한 문제가 있습니다. 나는 문제가 Log4Net 버전 1.2.11을 참조하는 LinqtoExcel에 있다고 생각하고 Log4Net을 sepratly로 참조하고 최신 1.2.13 버전을 얻었습니다. 빌드 출력에서는 1.2.13으로 끝나고 LintoExcel이 Log4Net을 호출하면 1.2.11 및 오류가 발생할 것으로 예상됩니다.

0

NuGet을 통해 log4net을 업그레이드 한 후에이 문제가 발생했습니다. 새로운 버전이 다른 키로 서명되었음을 확인하기 위해서입니다.

the apache log4net site에서 'oldkey'버전을 가져 와서 저에게 효과적이었습니다.

관련 문제