Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

단위 테스트 - Could not load file or assembly 'Microsoft.VisualStudio.QualityTools.VideoRecorderEngine' or one of its dependencies.

이상하군요. 특정 PC에서만 단위 테스트를 "디버그"로 실행하면 다음과 같은 오류가 발생합니다.

HResult=0x80131018
Message=Could not load file or assembly 'Microsoft.VisualStudio.QualityTools.VideoRecorderEngine' or one of its dependencies. The module was expected to contain an assembly manifest.
Source=mscorlib
StackTrace:
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) in f:\dd\ndp\clr\src\BCL\system\reflection\assembly.cs:line 1828

System.BadImageFormatException: 'Could not load file or assembly 'Microsoft.VisualStudio.QualityTools.VideoRecorderEngine' or one of its dependencies. The module was expected to contain an assembly manifest.'

재미있는 것은 실제로 "Microsoft.VisualStudio.QualityTools.VideoRecorderEngine.dll"은 다음의 경로에 존재하는데,

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform\Extensions
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform\Extensions\V1
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PrivateAssemblies\DataCollectors

.NET Reflector로 검사해 보면 오류 메시지에서 의미하는 데로 "assembly manifest"가 없는 그냥 Native DLL입니다. 테스트는 x86으로 하든 x64로 하든 System.BadImageFormatException 예외가 발생하는데 왜 그 컴퓨터에서만 발생하는지에 대해서는 원인을 모르겠습니다. ^^; "Output" 윈도우의 출력 내용을 보면 다음의 DLL 로드 후 곧바로 발생합니다.

'testhost.exe' (CLR v4.0.30319: testhost.exe): Loaded 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\ENTERPRISE\COMMON7\IDE\EXTENSIONS\TESTPLATFORM\Extensions\Microsoft.TestPlatform.TestHostRuntimeProvider.dll'. Cannot find or open the PDB file.

테스트 삼아 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform\Extensions" 폴더에 있는 "Microsoft.VisualStudio.QualityTools.VideoRecorderEngine.dll" 파일의 이름을 바꾸면 System.BadImageFormatException 예외 대신 그 위치에서 System.IO.FileNotFoundException와 System.ArgumentException 예외가 발생합니다. 그러다 다음의 DLL 로드 이후에,

'testhost.exe' (CLR v4.0.30319: testhost.exe): Loaded 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\ENTERPRISE\COMMON7\IDE\EXTENSIONS\TESTPLATFORM\Extensions\Microsoft.VisualStudio.UwpTestHostRuntimeProvider.dll'. Cannot find or open the PDB file.

다시 System.BadImageFormatException 예외가 이번에는 VSTestVideoRecorder.exe에 대해 발생합니다.

System.BadImageFormatException
  HResult=0x8007000B
  Message=Could not load file or assembly 'VSTestVideoRecorder' or one of its dependencies. An attempt was made to load a program with an incorrect format.
  Source=mscorlib
  StackTrace:
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) in f:\dd\ndp\clr\src\BCL\system\reflection\assembly.cs:line 1828

역시 이번에도 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform\Extensions" 폴더의 VSTestVideoRecorder.exe 파일명의 이름을 바꾸면 System.BadImageFormatException 예외 대신 System.IO.FileNotFoundException 예외로 바뀝니다.




저도 왜 저 오류가 발생하는지는 잘 모르겠습니다. 다른 PC에서 하면 관련 예외가 없는 걸로 봐서 뭔가 전역 설정이 있는 것 같은데 딱히 ^^; 찾을 수가 없습니다. 다행인 점은, 해당 예외들이 "first-chance exception"일 뿐 디버그 테스트에 직접적인 영향은 없다는 것입니다. 따라서 이를 해결하기 위해서는 2가지 방법 중 하나를 선택해야 합니다.

즉, "Ctrl + Alt + E"키를 눌러 나오는 "Exception Settings"에서 다음과 같은 예외를 해제하든지,

System.BadImageFormatException
System.ArgumentException

아니면 "Microsoft.VisualStudio.QualityTools.VideoRecorderEngine.dll", "VSTestVideoRecorder.exe" 파일명을 바꾸고 다음과 같이 예외를 해제하든지 택해야 합니다.

System.IO.FileNotFoundException
System.ArgumentException

참고로, 차후에는 아마 해결될 것입니다.

BadImageFormatException - Microst.VisualStudio.QualityTools.VideoRecorderEngine
; https://developercommunity.visualstudio.com/t/BadImageFormatException---MicrostVisual/168116




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/24/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2018-03-06 04시55분
15.6.0부터 해결되었습니다.
정성태

... 136  137  138  139  [140]  141  142  143  144  145  146  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1554정성태12/26/201335315Windows: 78. 마음에 드는 윈도우 8.1 태블릿 - 델 베뉴 8 프로 5830 [4]
1553정성태12/26/201322345개발 환경 구성: 206. JNBridgePro와 한글 인코딩 문제파일 다운로드1
1552정성태12/25/201327527개발 환경 구성: 205. JNBridgePro를 이용해 C#에서 Java메서드 호출 테스트파일 다운로드1
1551정성태12/24/201322677.NET Framework: 398. tech-days 미니 토요세미나 - 3회 C#편 PPT 자료파일 다운로드1
1550정성태12/13/201325057Windows: 77. Windows 8 - 잠시 사용을 안하는 경우 화면 잠김 상태로 빠지는 문제
1549정성태12/13/201328644VC++: 73. IIS - ISAPI 필터 제작하는 방법 [2]
1548정성태12/10/201321320오류 유형: 198. C# - 제네릭 covariance/contravariance 사용할 때 컴파일 오류가 발생한다면?
1547정성태12/10/201330886.NET Framework: 397. C# - OCX 컨트롤에 구현된 메서드에 배열을 in, out으로 전달하는 방법파일 다운로드2
1546정성태11/28/201324759.NET Framework: 396. C# - 프로퍼티로 정의하면 필드보다 느릴까요? - windbg / ollydbg [3]
1545정성태11/28/201328643.NET Framework: 395. C# - 프로퍼티로 정의하면 필드보다 느릴까요? [3]
1544정성태11/27/201325127개발 환경 구성: 204. Visual Studio Online "Monaco" 서비스와 github 연동
1543정성태11/27/201329874오류 유형: 197. error MSB8008: Specified platform toolset (v120) is not installed or invalid. [1]
1542정성태11/27/201335450오류 유형: 196. The procedure entry point InitializeCriticalSectionEx could not be located in the dynamic link library KERNEL32.dll
1541정성태11/22/201336655.NET Framework: 394. async/await 사용 시 hang 문제가 발생하는 경우 [7]파일 다운로드1
1540정성태11/20/201325105개발 환경 구성: 203. Azure - WEB SITES 서비스 소개 [4]
1539정성태11/19/201329107VS.NET IDE: 83. 형상 관리 서버 운영을 대신해 주는 Visual Studio 온라인 서비스
1538정성태11/19/201329981오류 유형: 195. 웹 사이트의 모든 정적 컨텐츠 요청에 대해 "Internal Server Error" 응답
1537정성태11/19/201321618오류 유형: 194. 윈도우 서버 백업으로 인해 Hyper-V VM들의 상태가 모두 "Backing up..." 상태로 오래 지속되는 문제
1536정성태11/19/201326439오류 유형: 193. 윈도우 서버 백업 - Hyper-V 가상 머신이 백업되지 않는 경우
1535정성태11/18/201326548.NET Framework: 393. Internet Explorer 11에서 ASP.NET 컨트롤의 크기가 달라지는 문제 [1]
1534정성태11/13/201326532.NET Framework: 392. .NET 스레드 콜 스택 덤프 (6) - MDbg를 이용한 방법 [2]파일 다운로드1
1533정성태11/12/201333754기타: 39. Internet Explorer 11에서 유튜브 동영상의 1080p 옵션이 보이지 않는 경우 [5]
1532정성태11/5/201334665Phone: 8. 안드로이드용 Xamarin 개발 시 겪을 만한 시행 착오 정리 [6]
1531정성태11/5/201326065VS.NET IDE: 82. Visual Studio에서 Attach 메서드를 이용해 디버깅을 시작한 경우 Breakpoint가 안 잡힌다면?
1530정성태11/5/201327440기타: 38. 오픈소스로 풀린 하드 디스크 관리 도구 - WindowSMART
1529정성태11/5/201323336오류 유형: 192. SQL 서버 - The transaction log for database '...' is full due to 'LOG_BACKUP'.
... 136  137  138  139  [140]  141  142  143  144  145  146  147  148  149  150  ...