'Npgsql.TypeMapping.BuiltInTypeHandlerResolver'의 형식 이니셜라이저에서 예외를 Throw했습니다.
오늘은 이런 오류가 발생했을 때 조치사항을 알아보겠습니다.
본 사례에 대한 내용을 먼저 설명드립니다.
제품의 솔루션이 따로 있었고, A도구 프로젝트를 별개로 개발했습니다. Json파일 역직렬화를 위해 System.text.json을 Nuget으로 설치했는데 솔루션의 버전을 확인하지 않고 최신 안정화 버전인 6.0.0.6으로 개발을 진행했죠.
솔루션의 DLL을 참조하다가 DLL프로젝트에서 자꾸 오류가 나서 솔루션에 A도구 프로젝트를 병합했습니다.
그때부터 다른 프로그램들이 맨 위에 저 오류를 내 뿜으면서 동작하지 않는 현상이 발생하기 시작합니다. A도구는 별도 경로를 가진 프로그램인데, 왜 메인 프로그램이 돌아가지 않는 걸까요? 저 위 오류의 Inner Exception을 보면 System.text.json 버전 불일치로 발생한 것 같아 모든 프로젝트를 6.0.0.6으로 업데이트 했습니다.
그래도 똑같네요. 솔루션 빌드정리하고 재빌드했더니 처음 한번 실행되고 재차 실행하면 같은 오류 발생... 악~~~
예전에 설치했었던 6.0.0.0과 6.0.0.2 두개 버전에 대한 오류가 계속 나왔습니다.
그래서 6.0.0.0으로 다운그레이드... 그래도 똑같았는데....
cproj 파일을 뒤져도 해당 버전은 보이지도 않는 차에 참조되는 DLL이 프로젝트 Cproj에만 들어가는게 아니라 App.config에도 들어간다는 사실을 찾았습니다.
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.2" newVersion="6.0.0.0" />
</dependentAssembly>
현재 6.0.0.0으로 되어 있어서 6.0.0.0으로 모든 프로젝트의 App.config를 수정하고 실행했더니 잘되는 것을 확인.
Nuget으로 버전 업데이트를 하고 꼭 저 파일을 확인해주세요.
'개발 > C#' 카테고리의 다른 글
C# 클래스 라이브러리 작성 시 다중 타겟 프레임워크 지원 (0) | 2023.06.22 |
---|---|
[2022.11] Enum Display name옵션으로 처리하는 방법 (0) | 2022.11.07 |
[2022.09] UTC시간을 현재 시간으로 변환하는 구문 (0) | 2022.09.30 |
[2022.09] 버전 관리의 고찰 (1) | 2022.09.29 |
[2022.09] 이중실행 방지 (0) | 2022.09.26 |