3

問題:MVC3 app - 取得中 "ファイルまたはアセンブリ 'System.Data.SQLite'またはその依存関係の1つを読み込めませんでした。

私はC#4.0、MVC 3ベースのWebアプリケーションを構築しています。私はSQLiteをデータベースとして使用しています。

私はアプリを起動すると、私はこのエラーを取得する:

は、ファイルまたはアセンブリ「System.Data.SQLite」またはその依存関係の1つをロードできませんでした。不正な形式のプログラムをロードしようとしました。

=== Pre-bind state information === 
LOG: User = Steve-PC\Steve 
LOG: DisplayName = System.Data.SQLite 
(Partial) 
WRN: Partial binding information was supplied for an assembly: 
WRN: Assembly Name: System.Data.SQLite | Domain ID: 2 
WRN: A partial bind occurs when only part of the assembly display name is provided. 
WRN: This might result in the binder loading an incorrect assembly. 
WRN: It is recommended to provide a fully specified textual identity for the assembly, 
WRN: that consists of the simple name, version, culture, and public key token. 
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue. 
LOG: Appbase = file:///C:/Users/Steve/Documents/Visual Studio 2010/Projects/EMMA3/EMMA_Web/ 
LOG: Initial PrivatePath = C:\Users\Steve\Documents\Visual Studio 2010\Projects\EMMA3\EMMA_Web\bin 
Calling assembly : (Unknown). 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\Users\Steve\Documents\Visual Studio 2010\Projects\EMMA3\EMMA_Web\web.config 
LOG: Using host configuration file: C:\Users\Steve\Documents\IISExpress\config\aspnet.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
LOG: Attempting download of new URL file:///C:/Users/Steve/AppData/Local/Temp/Temporary ASP.NET Files/root/6454c2d1/d37faccb/System.Data.SQLite.DLL. 
LOG: Attempting download of new URL file:///C:/Users/Steve/AppData/Local/Temp/Temporary ASP.NET  Files/root/6454c2d1/d37faccb/System.Data.SQLite/System.Data.SQLite.DLL. 
LOG: Attempting download of new URL file:///C:/Users/Steve/Documents/Visual Studio 2010/Projects/EMMA3/EMMA_Web/bin/System.Data.SQLite.DLL. 
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated. 

私が使用しています:

のWindows 7のx64 のVisual Web Developerの2010 IIS Expressの7.5 System.Data.SQLite x64の1.0

この

は、融合組立負荷のトレースです。 77.0

私はたくさんのことを知りました。一般的な考えは、これは64ビットで32ビットアセンブリを実行することに関連しているようですシステムまたはその逆。私が試した

物事:Webサーバに組み込まれたVSからIIS Expressに

  1. スイッチ。明らかに、組み込みサーバーは32ビットアプリケーションにしか対応できず、IIS Expressは両方を実行できます。変化なし。
  2. 64ビットバージョンのSQLiteを使用していることを確認してください。もともと、私は通常のバージョンを使用していましたが、64ビットバージョンに変更することは役に立たないようです。
  3. IISの「32ビットアプリケーションをwin 64に設定」を有効にします。 (IIS Expressでは、これはappcmd.exe-appcmdを使って行われます。apppool/apppool.name: ""/enable32bitapponwin64:true)。再び、これは変化しなかった。
  4. Sqliteをアンインストール/再インストールします。変化なし。
  5. より単純なバージョンのプロジェクトを作成して、すべてがきれいであることを確認し、原因を絞り込みます。これは私を下の「再現するステップ」に導くが、本当に助けにはなっていない。

再現手順:

  1. は新しいMVC 3 Webプロジェクトを作成します。
  2. 実行して動作することを確認します。
  3. SQLite x64への参照を追加するには、Nugetを使用します。
  4. サイトを再度実行すると、このエラーが発生します。

このように、私は上記のエラーが発生しています。それは間違いなくSQLiteの何らかの理由によるものですが、私は64ビットすべてを持っているようですが、それでも動作しません。何か案は?

ありがとうございます。

答えて

1

これはもう少し前のことですが、この質問は忘れてしまいました。

答えはSQLite x64を削除してSQLite x86をインストールすることでした...そのように単純です。 64ビット版のWindowsで64ビットのアセンブリをビルドすると変だと思うが、そこに行く。 実際にデータアクセスロジックを持つクラスライブラリは64ビット版のSQLiteを参照していますが、何らかの理由で実際のWebプロジェクトで32ビット版を参照する必要があります。

1

VisualStudio内からWebアプリケーションを実行しようとしたときにこのエラーが発生した場合は、ビルトインWebサーバーが32ビットのみであるためです。 VisualStudio内から64ビットでデバッグ/実行する場合は、Cassiniプロジェクトをチェックしてください。 cassiniの64ビット版をビルドし、VisualStudioのデフォルトWebサーバーの代わりに使用する方法があります。

関連する問題