C# 无法加载文件或程序集';log4net';

C# 无法加载文件或程序集';log4net';,c#,crystal-reports,log4net,installshield,gac,C#,Crystal Reports,Log4net,Installshield,Gac,我正在尝试部署Crystal Reports桌面应用程序,但该应用程序无法找到我的log4net程序集,即使我已验证我的安装程序正在GAC中注册log4netDLL。下面是异常和堆栈跟踪 Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system

我正在尝试部署Crystal Reports桌面应用程序,但该应用程序无法找到我的
log4net
程序集,即使我已验证我的安装程序正在GAC中注册
log4net
DLL。下面是异常和堆栈跟踪

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral,
   PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system 
   cannot find the file specified.
at CrystalDecisions.Shared.SharedUtils..cctor()
老实说,我完全不明白为什么这不起作用。。。所有版本都是一样的。我需要配置
log4net
才能工作吗


编辑:我正在使用InstallShield 2012将我的应用程序集安装到GAC。我正在安装的唯一其他东西是引用我的dll的一个非常小的exe,以及Program files文件夹中用于处理配置的几个文件。

假设dll已经在应用程序文件夹中,请转到项目的属性,单击应用程序文件,并将dll从“必备”更改为“包含”,然后保存它。然后它将出现在GAC中。

原来我使用的是同一版本的dll,但我使用的是另一个PublicKeyToken。在我解决了这个问题之后,它就起作用了。

将平台设置为x86对我来说很有效。之前是AnyCPU

,因为它可能是log4net的依赖项,而不是dll本身,所以您可能希望尝试Procmon或类似的方法,以查看它搜索并未能找到哪个dll。
CrystalDecisions.Shared.SharedDutils
类引用
log4net
。我已经使用了JustDecompile并检查过了。
SharedUtils
是无法找到
log4net
的类,为什么要将其放在GAC中?将它放在应用程序箱中。当我将应用程序部署到客户端时,它需要在GAC中。。。为什么客户端上会有一个bin目录?我想他的意思是,与您将要部署到客户端的应用程序二进制文件位于同一文件夹中。有什么原因不能将log4net与应用程序本身放在同一个文件夹中吗?正如我在最初的问题中所说,它已经在GAC中了。我想知道为什么克里斯托看不见它。你是怎么修好的?我们也有同样的问题。GAC中的DLL的PublicKeyToken与我预期的不同。我们有很多log4net程序集,所以我只需要在我的项目中引用正确的程序集。谢谢:)我想知道公钥上是否有frig(我们有相同的问题),而不是四处寻找具有相同公钥的DLL。我们最终找到并分类了。