我在ASP.NET项目中安装了ELMAH 1.1 .Net 3.5 x64,现在遇到此错误(无论何时尝试查看任何页面):无法加载文件或程序集'System.Data.SQLite,版本= 1.0.61.0,区域性=中性,PublicKeyToken = db937bc2d44ff139'或其依赖项之一。试图加载格式错误的程序。说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。异常详细信息:System.BadImageFormatException:无法加载文件或程序集'System.Data.SQLite,版本= 1.0.61.0,Culture =中性,PublicKeyToken = db937bc2d44ff139'或其依赖项之一。试图加载格式错误的程序。底部有更多错误详细信息。我的Active Solution平台是“任何CPU”,并且我正在x64处理器上当然在x64 Windows 7上运行。之所以使用此版本的ELMAH,是因为1.0 .Net 3.5(x86,这是为其编译的唯一平台)在x64 Windows服务器上给了我们同样的错误。我尝试为x86和x64进行编译,但遇到相同的错误。我试着删除所有编译器输出(bin和obj)。最终,我直接引用了SQLite dll,该项目在服务器上运行时不需要它,并且出现了此编译器错误:错误1错误警告:程序集生成-引用的程序集'System.Data.SQLite.dll'针对其他处理器MyProject任何想法可能是什么问题?更多错误详细信息:源错误:当前Web请求的执行期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来标识有关异常的来源和位置的信息。堆栈跟踪:[BadImageFormatException:无法加载文件或程序集'System.Data.SQLite,版本= 1.0.61.0,文化=中性,PublicKeyToken = db937bc2d44ff139'或其依赖项之一。试图加载格式错误的程序。] System.Reflection.Assembly._nLoad(AssemblyName文件名,字符串codeBase,证据AssemblySecurity,程序集locationHint,StackCrawlMark&stackMark,布尔throwOnFileNotFound,布尔值用于自省)+0 System.Reflection.Assembly .nLoad(AssemblyName文件名,字符串codeBase,证据assemblySecurity,程序集locationHint,StackCrawlMark&stackMark,布尔throwOnFileNotFound,布尔forIntrospection)+43System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,证据assemblySecurity,StackCrawlMark&stackMark,布尔值用于自省)+127 System.Reflection.Assembly.InternalLoad(字符串assemblyString,证据AssemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection)+142 System.Reflection.Assembly Load(字符串assemblyString)+28 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串assemblyName,布尔型starDirective)+46
4 回答

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
System.Data.SQLite.dll
是混合程序集,即它既包含托管代码又包含本机代码。因此,特定的System.Data.SQLite.dll
是x86或x64,但两者都不是。
更新(由J. Pablo Fernandez提供): Cassini,当您按下F5或单击绿色的“播放”按钮时,Visual Studio使用的开发Web服务器仅是x86,这意味着即使您的工作站是x64,您也只能能够使用System.Data.SQLite.dll的x86版本。
另一种选择是不使用Cassini,而是使用IIS7,它是正确的x64。

饮歌长啸
TA贡献1951条经验 获得超3个赞
转到IIS7 Application Pool -> advanced settings and set the 32-bit application to true
。

守候你守候我
TA贡献1802条经验 获得超10个赞
如果您不使用SQLite,这非常简单:
您可以从解决方案的bin文件夹中删除SQLite DLL,然后从引用ELMAH的文件夹中删除。重建,并且您的应用程序将不会尝试加载您未使用的DLL。
- 4 回答
- 0 关注
- 2917 浏览
添加回答
举报
0/150
提交
取消