1. ホーム
  2. .net

[解決済み] ファイルまたはアセンブリ 'System.Data.SQLite' をロードできませんでした。

2022-02-12 10:10:20

質問

ASP.NETプロジェクトにELMAH 1.1 .Net 3.5 x64をインストールしましたが、現在このエラーが発生します(どのページを見ようとすると)。

ファイルまたはアセンブリをロードできませんでした 'System.Data.SQLite、Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or その依存物の1つです。試行錯誤 を読み込もうとしました。 不正な形式です。

説明 このとき 処理されない例外が発生しました。 現在のWebの実行 リクエストに対応します。スタックトレースをご覧ください エラーの詳細については と、その原因がコードのどこにあるのかを説明します。

例外の詳細です。 System.BadImageFormatException: Could ファイルまたはアセンブリをロードしない 'System.Data.SQLite、バージョン=1.0.61.0。 Culture=neutral, PublicKeyToken=db937bc2d44ff139' or その依存物の1つです。試行錯誤 を読み込もうとしました。 不正な形式です。

エラーの詳細は下部にあります。

私のActive Solutionのプラットフォームは"Any CPU"で、x64のWindows 7で、もちろんx64のプロセッサで動作させています。このバージョンのELMAHを使用しているのは、1.0 .Net 3.5 (x86、これはコンパイルされている唯一のプラットフォームです)が、私たちのx64 Windowsサーバーでこの同じエラーを出したからです。

x86とx64でコンパイルしてみましたが、同じエラーが出ます。コンパイラの出力(binとobj)をすべて削除してみました。最後に、プロジェクトがサーバー上で動作するために必要でないSQLite dllを直接参照したところ、このコンパイラーエラーが発生しました。

エラー1 エラーとしての警告。Assembly generation -- Referenced assembly 'System.Data.SQLite.dll' targets a different processor MyProject

何か思い当たることはありますか?

エラーの詳細を見る

<ブロッククオート

ソースエラーです。

処理されない例外が発生しました を実行中です。 Web リクエストを送信します。に関する情報 例外の発生元と発生場所 を確認することができます。 スタックトレース

スタックトレース

[BadImageFormatException: できませんでした。 ファイルまたはアセンブリをロードする 'System.Data.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or その依存物の1つです。試行錯誤 のプログラムをロードしようとしました。 不正なフォーマット]]。
System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence アセンブリセキュリティ、アセンブリ locationHint, StackCrawlMark& stackMark, ブール値 throwOnFileNotFound, Boolean forIntrospection) +0
System.Reflection.Assembly.nLoad(AssemblyName ファイル名, コードベース文字列, Evidence アセンブリセキュリティ、アセンブリ locationHint, StackCrawlMark& stackMark, ブール値 throwOnFileNotFound, Boolean forIntrospection) +43
System.Reflection.Assembly.InternalLoad(アセンブリ名 assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +127 System.Reflection.Assembly.InternalLoad(String アセンブリ文字列, 証拠 assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +142 System.Reflection.Assembly.Load(String) アセンブリ文字列) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(文字列 assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException: Could ファイルまたはアセンブリをロードしない 'System.Data.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or その依存物の1つです。試行錯誤 のプログラムをロードしようとしました。 不正なフォーマット]]。
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +613 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +203 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +105
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +178
System.Web.Compilation.BuildProvidersCompiler.ctor(VirtualPath configPath, ブール値 サポートローカライゼーション, 文字列 outputAssemblyName) +54
System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean) isPrecompiledApp) +232
System.Web.Compilation.BuildManager.CompileGlobalAsax()を実行します。 +52 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()の場合 +337

[HttpException (0x80004005): Could not ロードファイルまたはアセンブリ 'System.Data.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or その依存物の1つです。試行錯誤 のプログラムをロードしようとしました。 不正なフォーマット]]。
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()の場合 +512 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, ホスティング環境パラメータ hostingParameters) +729

[HttpException (0x80004005): Could not ロードファイルまたはアセンブリ 'System.Data.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or その依存物の1つです。試行錯誤 のプログラムをロードしようとしました。 不正なフォーマット]]。
System.Web.HttpRuntime.FirstRequestInit(HttpContext コンテキスト) +8896783
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext) コンテキスト) +85
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest) wr) +259

どのように解決するのですか?

System.Data.SQLite.dll は混合アセンブリです。つまり、マネージドコードとネイティブコードの両方が含まれています。そのため、特定の System.Data.SQLite.dll はx86かx64のどちらかであり、両方であることはない。

アップデート( 提供:J. Pablo Fernandez氏 ): F5キーを押すか緑色の「再生」ボタンをクリックするとVisual Studioで使用される開発用WebサーバーのCassiniは、x86のみです。つまり、ワークステーションがx64であっても、x86バージョンのSystem.Data.SQLite.dllのみを使用することができるのです。

Cassiniではなく、x64に対応したIIS7を使用する方法もあります。