1. ホーム
  2. c#

[解決済み] DLL 'SQLite.Interop.dll' をロードできません。

2022-02-05 08:37:25

質問

定期的に以下のような例外が発生します。

Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

バージョン1.0.82.0を使用しており、VS2010、OS Win7 64でnugetを使用してインストールしています。

一度例外が出始めると、デバッグでもリリースでも、またVS内外でアプリケーションを実行しても、常に例外が出ます。

これを止める唯一の方法は、ログオフとログオンです。例外はスローされず、DLLはロードされます。 何日かうまくいくこともありますが、また壊れることもあります。

どなたかこのようなことを見たことがある方、解決策はありますか?

解決方法は?

NuGet を追加した後、デプロイメントが Interops をコピーしないのですね。 csproj ファイルにこれを追加すると、この動作が修正されるはずです。

 <PropertyGroup> 
    <ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
    <CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
    <CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
    <CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
 </PropertyGroup>

NuGet for SQLiteのソースを見れば、これらが具体的に何をやっているのかが分かると思います。 これでASP.Net Coreでデプロイを動作させることができました。