无法加载文件或程序集“log4net”或其某个依赖项。

4
我正在尝试创建一个水晶报表,但我对这个领域很陌生。我已经按照这篇教程文章创建了一个水晶报表,但它似乎无法工作。
我的错误信息如下:
未能加载文件或程序集"log4net"之一。尝试加载具有不正确格式的程序。
描述:执行当前 Web 请求时出现未经处理的异常。请检查堆栈跟踪以获取有关错误的更多信息,以及该错误在代码中的位置。
异常详细信息:System.BadImageFormatException: 未能加载文件或程序集"log4net"之一。尝试加载具有不正确格式的程序。
源错误:
执行当前 Web 请求时生成了一个未经处理的异常。通过下面的异常堆栈跟踪可以确定异常的起源和位置。
程序集加载跟踪:以下信息有助于确定无法加载程序集“log4net”的原因。

你的电脑上安装了log4net吗? - ChrisF
你的问题出在log4net上,而不是Crystal Reports。你是否已经添加了对log4net dll的引用? - DJ Quimby
不,我没有,也不知道如何做。你能帮我吗?谢谢。 - emilios
你的应用程序是构建在32位、64位还是AnyCPU上?你的IIS版本是7吗?IIS是否运行在64位机器上?log4net.dll是否适合你的位架构版本? - Steve
1
AnyCPU,在64位计算机上运行的IIS 7版本。我该如何检查log4net.dll? 注:该翻译仅供参考,具体语境可能需要进一步确认。 - emilios
所以您需要一个完整的64位环境。log4net可以从此网站下载。下载是针对AnyCPU的,因此应该可以在您的环境中工作,只需记得替换输出目录中的引用和二进制文件即可。 - Steve
2个回答

7

BadFormatImageException是在编译程序为32位架构的情况下尝试加载64位库或反之时所收到的错误。从错误信息中,您可以看到对log4net(一个著名的日志库)的引用。
首先,检查您正在创建应用程序的CPU类型(x86、x64、AnyCPU)。
第二,检查log4net的位数(您应该引用与您的应用程序相同的位数)。
第三,检查IIS运行的操作系统(如果是x64且您的应用程序是32位,则在应用程序池的高级设置部分将“启用32位应用程序”设置为true)。


1
“尝试加载格式不正确的程序”可能是因为您的某些dll是32位的,而另一些则是64位的。另一个原因可能是您的应用程序服务器配置为64位,而dll是32位(或者反过来)。
我首先会检查IIS的设置(这取决于您使用的版本),然后检查dll是否编译为32位或64位(从我的项目设置中)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接