【问题标题】:System.IO.FileLoadException: Could not load file or assembly 'log4netSystem.IO.FileLoadException:无法加载文件或程序集“log4net”
【发布时间】:2020-06-22 12:02:35
【问题描述】:

我们在 MVC.NET 项目中使用 Crystal Report,请参阅此链接:从数据创建 PDF 文件并使用 MVC.NET 中的 Crystal Reports 导出。https://www.c-sharpcorner.com/article/use-crystal-report-in-mvc-net/

导出报告后出现此错误并尝试运行它: System.TypeInitializationException:“CrystalDecisions.CrystalReports.Engine.ReportDocument”的类型初始化程序引发异常。 ---> System.TypeInitializationException: 'CrystalDecisions.Shared.SharedUtils' 的类型初始化程序引发了异常。 ---> System.IO.FileLoadException:无法加载文件或程序集“log4net,版本=1.2.10.0,文化=中性,PublicKeyToken=692fbea5521e1304”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    很可能,您使用“AnyCPU”作为目标编译了应用程序。 更改为特定目标(x86 或 64)。 确保 Crystal 运行时与该目标匹配。 确保也为该目标设置了 Web 应用程序池。

    【讨论】:

    • 谢谢您,但是我们尝试了您提到的方法,但没有成功,您还有其他建议吗? @小米软件
    【解决方案2】:

    这对我有用:

    记下一些细节

    从错误中,记录: .dll 文件 版本 公钥令牌 供以后使用。

    确认 .dll 存在

    在VS中找到项目,右键“在文件资源管理器中打开文件夹”。然后进入 ../bin/Debug 并搜索导致异常的 .dll 文件。

    如果 .dll 不存在,那么这不是正确的修复方法,而且还有其他问题。

    获取 .dll 正在使用的正确程序集版本

    我的 .dll 中的版本是 4.0.1.0。 如果您尚未安装 ILSpy,请在您的 PC 上打开 microsoft store 并下载它(它是免费的)。然后将有问题的 .dll 文件拖到 ILSpy 中并搜索以下内容的行:

    [assembly: AssemblyVersion("4.0.3.0")]
    

    如您所见,版本之间存在不一致。这就是导致错误的原因。

    更新 app.config

    回到 VisualStudio,打开失败项目中的 app.config 文件,并在其中添加这个 sn-p:

    <runtime>
       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
           <assemblyIdentity name="System.Configuration.ConfigurationManager" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
           <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
         </dependentAssembly>
       </assemblyBinding>
    </runtime>
    

    确保 publicKeyToken 是您记录的值,并且您将 oldVersion 上限值和 newVersion 值设置为在 .dll 文件中找到的 assemblyVersion。此外,请确保错误中显示的版本在您设置的范围内(即它是旧版本)。

    一切就绪。这应该可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-13
      • 2014-05-19
      • 2020-05-04
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多