2013-05-01 10 views
0

출시 된 응용 프로그램에 대한 일부 미니 덤프를 조사하고 있습니다. 로컬에서 이러한 충돌을 재현 할 수는 없지만로드 된 dll의 목록에 regular 및 .ni를 모두 포함하는 많은 수의 보고서가 있습니다. 일부 WPF dll 버전 VS 2010 년 '모듈'창에서응용 프로그램에서 NativeImage 및 JIT 버전의 .Net dll을 모두로드 할 수 있습니까?

, (여기 형식) 예를 들어 PresentationCore

PresentationCore.dll C : \ WINDOWS ... \ PresentationCore.dll -로드 기호입니다. C : \ Users ... \ PresentationCore.pdb
PresentationCore.ni.dll * C : \ Windows ... \ PresentationCore.ni.dll - 일치하는 이진 파일이 없습니다. PresentationFramework.Aero.dll * C : \ Windows ... \ PresentationFramework.Aero.dll - 일치하는 이진 파일이 없습니다. PresentationFramework.Aero.ni.dll * C : ... \ NativeImages ... \ PresentationFramework.Aero.ni. dll - 일치하는 바이너리가 없습니다.

기본적으로 NativeImage와 JIT 버전을 모두로드하는 것처럼 보입니다. 이것이 가능한가?

로컬 컴퓨터에서 출시 된 제품의 부하를 확인했으며 Visual Studio는 모듈 창에로드 된 단일 버전 만 나열합니다. 또한 Fusion은 NativeImage 버전의로드시 오류를보고하지 않습니다. 일반적인 경고는 다음과 같습니다.

WRN : LoadFrom 컨텍스트에서 원시 이미지가 탐색되지 않습니다. 네이티브 이미지는 Assembly.Load()와 같이 기본로드 컨텍스트에서만 탐색됩니다.

지금까지 내가 아는 한, 우리가

내 호출 스택에서 NativeImage의 혼합 정상적인 DLL의보고 오전 이유가 ... 이러한 바이너리를 참조 LoadFrom을 사용하므로하지? 정상입니까? 이 문제가 발생할 수 있다면 어떤 생각, 그리고 당신이 어떤 일이 발생하지 않도록하는 방법을 권장합니까?

+0

JIT 바이너리로드를 트리거 한 dll은 LoadFrom을 사용하여 명시 적으로로드되었습니다. privateBinDir을 경로를 포함하도록 변경하고 Load를 사용하여로드했습니다. 이는 NativeImage 캐시에서 참조를로드 할 수있게하는 것 같습니다. 이것은 JIT dll의 참조가 기본로드 컨텍스트로 복귀 함을 설명하는 문서와 직접적으로 대비되는 것으로 보입니다. – FrozenKiwi

답변

0

응용 프로그램에서 여러 버전을로드 할 수있는 것으로 보입니다. "LoadFrom"대신 "Load"를 사용하도록 플러그인로드를 다시 작성하고 응용 프로그램의 프로빙 경로에 플러그인 디렉토리를 추가했습니다. 이후 Fusion Logger는 GAC와 NI 디렉토리간에 더 이상 복제본을 보여주지 않았습니다.

http://msdn.microsoft.com/en-CA/library/823z9h8w(v=vs.80).aspx

불행히도, 난 스위치 도입 불안정 등이 주요 지점에 진짜 대답을 (시작 시간을 줄일 수) 얻을 수 없습니다 나는 깨끗한 부하를 가져올 수 없습니다. 지금 당장 변경을 되돌려 놓았습니다. 물건을 깔끔하게 가져올 수 있다면 그 결과로 답변을 업데이트 할 것입니다.