개발시 사용된 dll과 배포시 참조하는 dll의 버전이 달라 로드할 수 없다고 나오는 이유가 무엇일까요

안녕하세요.
현재 솔루션에 실제로 개발된 어플리케이션 프로젝트가 있고
해당 어플리케이션을 배포하는 배포프로젝트(setup project)가 있고
배포 프로젝트에서 실행되어 배포시에 처리되어야 할 사전 처리(DB 스크립트를 실행하여 DB를 생성하는 등)
CustomAction 윈폼 프로젝트(.net framework) 3개의 프로젝트가 있습니다.

Setup project는 비주얼 스튜디오 확장에서 추가한 Microsoft Visual Studio Installer Projects 2022 입니다.

CustomAction 프로젝트에서 폼하나에 DB 연결정보 등을 입력 받고 DB에 연결하여 sql 파일의 스크립트를 불러와
DB를 생성합니다.

CustomAction 프로젝트 자체만 단독으로 디버깅 하여 실행하면 정상적으로 실행이 되고 DLL 참조 문제 등이 발생하지 않는데요. 해당 프로젝트를 Setup 프로젝트에 포함시켜 설치시에 실행하면 DLL의 버전 문제등이 발생합니다.

예를들면 CustomAction 에서 사용된 Microsoft.Data.SqlClient 는 버전이 5.0.0 인데 Setup 프로젝트에서
불러와서 설치를 해보면 Microsoft.Data.SqlClient 버전 3.0.0을 로드하지 못했다고 하면서 설치 중간에 예외가 발생합니다. 그래서 다시 CustomAction에서 3.0.0으로 낮춰서 설치하면 Setup 프로젝트에서는 동작하는데
CustomaAction 프로젝에서는 또 실행하면 버전문제가 발생하여 5.0.0을 설치해야 하는 상황입니다.

이렇게 실제 윈폼 프로젝트에서 사용된 DLL들이 Setup 프로젝트에 포함되어 배포되고 할때 DLL 버전 문제가 발생하는 원인을 아시는 분 계실까요?

도움 부탁드립니다.


윈폼 프로젝트에서 참조된 Microsoft.Data.SqlClient 버전 5.0.0.0

image
실제 배포 설치시 로드할 수 없다고 하는 Microsoft.Data.SqlClient 버전 3.0.0.0


setup 프로젝트에서 참조된 Microsoft.Data.SqlClient 버전 5.0.0.0

좋아요 1

혹시 개발 PC와 설치하는 PC의 OS가 동일한가요?? 주로 회사내 프로그램을 만들다 보니 배포를 할 일이없어서 배포프로젝트는 모르겠지만 빌드를 해서 개발PC와 OS가 다른 PC에서 실행을 하면 DLL 버전 오류가 뜨는 경우가 있었습니다. (.net의 개발과 운영버전은 동일) 당시 오라클 클라이언트 DLL 파일이 그랬는데 OS별로 지원하는 DLL 버전이 상이하다는걸 알게되었고 별다른 컴파일 없이 DLL만 바꿔주니 정상적으로 작동을 하더라고요~ install과정에서 OS 정보에 맞게 DLL버전을 설치하도록 구성하면 될듯합니다.

좋아요 1

답변 감사합니다.
네 개발 PC와 설치 PC가 동일합니다.
로컬에서 개발하고 설치할 때도 이 문제가 발생합니다.
이 문제에 대해서 좀 더 확인중에 있습니다.

좋아요 1