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

Could not load file or assembly 'Microsoft.VisualStudio.TextTemplating.VSHost.15.0, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.

이상하군요, XmlCodeGenerator가 Preview 버전까지만 해도 잘 동작했는데 2022 정식 버전에서는 동작을 하지 않습니다. 디버깅을 해보니, "FileNotFoundException" 예외가 발생하는데요,

System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.VisualStudio.TextTemplating.VSHost.15.0, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.'

그러니까, 아예 XmlCodeGenerator 확장 DLL이 저것 때문에 올라오지도 못하고 있었던 것입니다.

=== Pre-bind state information ===
LOG: DisplayName = Microsoft.VisualStudio.TextTemplating.VSHost.15.0, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/Program Files/Microsoft Visual Studio/2022/Enterprise/Common7/IDE/
LOG: Initial PrivatePath = NULL
Calling assembly : XmlCodeGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8247e1cbdabdbe2d.
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Using application configuration file: %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\17.0_03677d2cExp\devenv.exe.config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.VisualStudio.TextTemplating.VSHost.15.0, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: The same bind was seen before, and was failed with hr = 0x80070002.

차근히 볼까요? Initial PrivatePath도 null이면 사실상 찾을만한 곳은 Appbase뿐이지만 실제로 devenv.exe가 실행된 프로세스를 보면 다음의 경로에서도 찾는 것을 볼 수 있습니다.

  • C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\
  • C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\PublicAssemblies
  • GAC

그리고 저 경로를 모두 살펴보면 "Microsoft.VisualStudio.TextTemplating.VSHost.15.0" 어셈블리가 없기 때문에 오류가 발생하는 것은 맞긴 합니다.




일단, 원인 분석은 되었으니, 이제 문제는 Microsoft.VisualStudio.TextTemplating.VSHost.15.0 어셈블리를 어떻게 vsix에 포함시키느냐입니다. 모든 참조 dll은 "Copy Local" 속성을 "true"로 했기 때문에 포함이 되어야 하는 것이 맞는데요, 이상하게도 vsix에는 오직 XmlCodeGenerator.dll 파일만 있습니다.

다행히 검색해 보면 다음의 글이 나오는데요,

How to add referenced DLLs to VSIX? 
; https://social.msdn.microsoft.com/Forums/sqlserver/en-US/e59b527b-a683-40ea-9a25-5d7acbb48074/how-to-add-referenced-dlls-to-vsix?forum=vsx

따라서, vsixmanifest 파일을 열어 추가해 주면 됩니다.

vsix_dll_1.png

실제로 저렇게 설정하고 빌드하면 vsix에 DLL 파일이 있고, 모든 기능이 정상적으로 잘 동작했습니다.




참고로, 이외에 여러 가지 변화가 있는데 경험상 2022는 바뀐 부분이 너무 많아서 경우에 따라 아예 extension을 2022 전용으로 작성하는 것이 편할 수 있습니다. 그렇지 않고 2019와 2022를 동시에 지원하려면... 상당히 피곤해지실 것입니다. ^^;





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







[최초 등록일: ]
[최종 수정일: 1/8/2022]

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

비밀번호

댓글 작성자
 




... 181  182  183  [184]  185  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
411정성태12/16/200620801오류 유형: 21. TFS SP1 설치 관련 오류 (2) - KB919156 패치 이후 TFS 접근 문제
410정성태12/16/200622035오류 유형: 20. TFS SP1 설치 관련 오류 (1) - KB919156 패치
408정성태12/10/200624346Windows: 7. USB 드라이브 내용 암호화
407정성태12/10/200621744오류 유형: 19. Vista 에서의 VS.NET 2005 로 개발한 어셈블리에 대한 서명 확인 오류
406정성태12/10/200626573Windows: 6. IE 7 검색 공급자 - 영한 사전
403정성태12/6/200633728Windows: 5. Vista 와 웹 인증 등록 서비스의 문제 [5]
402정성태12/11/200624709Windows: 4. Vista 설치 후기 [1]
409정성태12/11/200628727    답변글 Windows: 4.1. Vista 설치 후기 - 두 번째 이야기 [3]
396정성태2/13/200731287오류 유형: 18. "Automatic Updates" 서비스 CPU 100% 점유 현상
393정성태11/8/200620867오류 유형: 17. Unable to start debugging - The binding handle is invalid.
371정성태10/23/200620135오류 유형: 16. STS Communication failed.
370정성태11/12/200623962.NET Framework: 75. Windows CardSpace 이야기 (이 글의 내용은 재작성되어질 예정입니다.)
375정성태10/25/200625857    답변글 .NET Framework: 75.1. 개인 발행 카드에 대한 Microsoft 예제 실습(이 글의 내용은 재작성되어질 예정입니다.)
376정성태10/27/200625558    답변글 .NET Framework: 75.2. "Windows CardSpace"와 "인증서 서비스"의 만남(이 글의 내용은 재작성되어질 예정입니다.)
377정성태10/26/200625416    답변글 .NET Framework: 75.3. Managed Card 발행에 대한 Microsoft 예제 실습 (1) - CardWriter (이 글의 내용은 재작성되어질 예정입니다.)
385정성태11/6/200627831    답변글 .NET Framework: 75.4. Managed Card 발행에 대한 Microsoft 예제 실습 (2) - STS 구현 (이 글의 내용은 재작성되어질 예정입니다.) [7]
387정성태11/2/200628678    답변글 .NET Framework: 75.5. Windows CardSpace와 SYSNET 사이트의 만남 (이 글의 내용은 재작성되어질 예정입니다.) [1]
397정성태11/11/200626240    답변글 .NET Framework: 75.6. CardWriter.csproj와 함께 알아보는 인증서 식별 방법(이 글의 내용은 재작성되어질 예정입니다.)
398정성태11/12/200624683    답변글 .NET Framework: 75.7. 카드에 암호 거는 방법(이 글의 내용은 재작성되어질 예정입니다.)
399정성태11/12/200626886    답변글 .NET Framework: 75.8. 인증서/스마트 카드에 기반한 Managed Card - STS 구현(이 글의 내용은 재작성되어질 예정입니다.) [5]
369정성태10/22/200622326오류 유형: 15. 자동 업데이트 실패
367정성태10/22/200638239Windows: 3. IIS 7.0 다중 바인딩 설정하는 방법 [1]
365정성태10/21/200621662Windows: 2. 서버(build 5600)에 IIS 7.0 서비스와 .NET 3.0 설치 방법
359정성태10/17/200617875오류 유형: 14. VS.NET 빌드 오류 - FxCopCmd.exe returned error code 65.
358정성태10/17/200623170오류 유형: 13. WSE 3.0 서비스 관련 WSE101 오류 / Destination Unreachable
357정성태12/1/200625423.NET Framework: 74. WCF 이야기 [4]
... 181  182  183  [184]  185  186  187  188  189  190  191  192  193  194  195  ...