问题:
我正在构建 ac# 4.0,基于 MVC 3 的网络应用程序。我使用 SQLite 作为数据库。
当我启动应用程序时,我收到此错误:
无法加载文件或程序集“System.Data.SQLite”或其依赖项之一。试图加载格式不正确的程序。
这是融合装配载荷跟踪:
=== 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 位程序集有关,反之亦然。
我尝试过的事情:
- 从 VS 内置的 Web 服务器切换到 IIS Express。显然,内置服务器只能处理 32 位应用程序,而 IIS Express 两者都可以。不用找了。
- 确保您使用的是 64 位版本的 SQLite。本来我用的是普通版,但是改成64位版好像没什么用。
- 在 IIS 中启用“win 64 上的 32 位应用程序”设置。(在 IIS express 中,这是使用 appcmd.exe - appcmd set apppool /apppool.name: "" /enable32bitapponwin64:true 完成的)。同样,这没有改变。
- 卸载/重新安装 Sqlite。不用找了。
- 创建一个更简单的项目版本,以确保一切都是干净的并缩小原因。这导致我进入下面的“复制步骤”,但并没有真正帮助我。
重现步骤:
- 创建新的 MVC 3 Web 项目。
- 运行它并查看它是否有效。
- 使用 Nuget 添加对 SQLite x64 的引用。
- 再次运行站点,它会给出这个错误。
总而言之 - 我收到上面的错误,这肯定是由于 SQLite 的某种原因,我似乎拥有 64 位的所有内容,但它仍然无法正常工作。有任何想法吗?
提前致谢。