본문 바로가기
Development/.NET

[.NET] "System.Exception: Library e_sqlite3 not found" 오류 해결 방법

by Kyunghoon Kim 2024. 9. 28.

 최근에 내부 DB를 사용할 일이 있어 SQLite로 환경 구축을 하던 중 "System.Exception: Library e_sqlite3 not found" 오류를 맞닥뜨렸습니다. 이번 포스팅에서는 해당 오류 해결 방법에 대해 알아보겠습니다.

 

 저는 Microsoft.Data.Sqlite NuGet을 사용하였고 SQL 쿼리와 매핑 간소화를 위해 Dapper도 함께 사용하였습니다. 객체 모델과 관계형 모델 간의 불일치를 줄이고 무엇보다 성능이 중요하였습니다. Dapper 뿐만 아니라 EF Core 등 다른 ORM도 많으니 필요와 용도에 맞게 구성하시면 될 듯합니다. SQL 쿼리를 더 간결하고 직관적으로 사용하기 위해 SQL 빌더인 SqlKata도 함께 사용하였습니다.

 개인적으로 Dapper와 SqlKata 조합이 서로 보완적으로 사용할 수 있어서 좋은 것 같습니다. SqlKata로 SQL 쿼리를 동적 생성하고, 이를 Dapper로 실행하는 방식입니다.

 

 

GitHub - DapperLib/Dapper: Dapper - a simple object mapper for .Net

Dapper - a simple object mapper for .Net. Contribute to DapperLib/Dapper development by creating an account on GitHub.

github.com

 

GitHub - sqlkata/querybuilder: SQL query builder, written in c#, helps you build complex queries easily, supports SqlServer, MyS

SQL query builder, written in c#, helps you build complex queries easily, supports SqlServer, MySql, PostgreSql, Oracle, Sqlite and Firebird - sqlkata/querybuilder

github.com

 

무튼 필요한 NuGet 패키지들을 비롯한 종속성 추가를 끝낸 후 빌드를 하려고 하니 "System.Exception: Library e_sqlite3 not found" 오류가 발생하면서 DB가 정상적으로 생성되지 않았습니다. 이 문제는 e_sqlite3.dll 파일이 애플리케이션 실행 시 로드되지 않아 발생하고 있었습니다. 이 내용을 서칭 하던 중에 이미 오래전부터 발생해오고 있는 문제라는 것을 알게 되었고 이 문제를 해결(우회?) 할 수 있는 관련 Issue를 찾게 되었습니다.

 

 

[.Net Framework 4.8]Library e_sqlite3 not found · Issue #19396 · dotnet/efcore

A .Net Framework 4.8 program referencing a .Net Standard 2.0 using EFCore.Sqlite 3.1 can't simply run (on Any CPU/X64/X86) with an exception shown: System.TypeInitializationException: The type init...

github.com

 

위 링크를 들어가 보면 여러 가지의 해결 방법들이 있는데, e_sqlite3.dll 파일을 수동으로 추가해 주거나 패키지 참조를 적절히 설정하는 방법 등이 있습니다. 저는 SQLitePCLRaw.bundle_e_sqlite3 패키지 폴더 내부의 runtimes\win-x86\native\e_sqlite3.dll 폴더 전체를 복사해서 빌드 파일에 추가해 해결하였습니다. 물론 이 방법은 임시방편으로 다른 적절한 방법을 모색해야 할 것 같습니다.

댓글