无法加载文件或程序集'CrystalDecisions.ReportAppServer.CommLayer,Version = 13.0.2000.0

时间:2016-06-25 06:15:53

标签: asp.net crystal-reports

我开发了一个简单的项目。我必须打印一些水晶报告。该项目在本地机器上运行得非常好,但是当我在网络托管服务器上运行时,它会在查看水晶报告时显示错误。

无法加载文件或程序集“CrystalDecisions.ReportAppServer.CommLayer,Version = 13.0.2000.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304”或其中一个依赖项。该系统找不到指定的文件。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集“CrystalDecisions.ReportAppServer.CommLayer,Version = 13.0.2000.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304”或其依赖项之一。系统找不到指定的文件。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

程序集加载跟踪:以下信息有助于确定无法加载程序集“CrystalDecisions.ReportAppServer.CommLayer,Version = 13.0.2000.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304”的原因。

警告:装配绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。 注意:程序集绑定失败日志记录会导致一些性能损失。 要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

请任何人帮助我.....

11 个答案:

答案 0 :(得分:6)

正如我在评论中所说,您的crystaldecisions.reportappserver.commlayer.dll未复制/存在于您的服务器上。因此,您必须手动复制dll并粘贴到Bin文件夹

要从visual studio项目中复制DLL,请按照步骤

进行操作
  

1.展开您的项目引用层次结构(项目不应该在调试模式中)

     

2.右键单击特定Dll(在您的情况下为crystaldecisions.reportappserver.commlayer.dll)并选择属性并设置'复制本地'属性为 TRUE

     

3构建您的项目。 Dll应该在BIN文件夹中。

enter image description here

答案 1 :(得分:5)

移动到新笔记本电脑后,我遇到了同样的错误(Windows 10)。除了如上所述将Copy Local设置为true之外,我还必须为.Net Framework安装Crystal Reports 32位运行时引擎,即使其他所有内容都设置为在64位环境中运行。希望有所帮助。

Windows Control Panel - Programs and Features

答案 2 :(得分:1)

为每个crystaldecisions文件版本编辑Web配置使其与dll文件中的版本相同(从右键单击并从解决方案资源管理器中选择属性) 例如。 crystaldecisions.reportappserver.commlayer.dll - > 13.0.2000.0 将晶体报告升级到CRforVS_13_0_21后,将其编辑为---> 13.0.35.00.0

答案 3 :(得分:1)

我在搬到新笔记本电脑时遇到了同样的问题,并使用以下步骤来解决它

答案 4 :(得分:0)

在第一个盘子里你必须检查:

  • 1)您安装了适当版本的Crystal Reports SDK => http://downloads.i-theses.com/index.php?option=com_downloads&task=downloads&groupid=9&id=101(例如)
  • 2)添加对dll =>的引用 crystaldecisions.reportappserver.commlayer.dll

答案 5 :(得分:0)

以某种方式我在项目中注册了错误版本的DLL。

  • 我从项目中删除了对Crystal Report dll的三个引用。 Crystal DLLs
  • 我右键单击“引用”,然后单击“添加引用”
  • 在弹出窗口中,单击左侧的“浏览”菜单和“浏览”按钮 Reference Manager
  • 在DLL所在的目录窗口(可能是应用程序的bin目录)中,选择三个Crystal Reports DLL,然后单击“添加”。 DLLs
  • 返回到“参考管理器”窗口,单击三个Crystal dll左侧的第一列,然后单击“确定”。 enter image description here
  • 此时,您的Crystal Reports应该可以再次工作。

答案 6 :(得分:0)

我遇到了同样的问题,并按照以下步骤解决了

1)在解决方案资源管理器中转到右侧
2)点击您的Project Name
3)点击Reference
4)您可以在某些DLL上看到黄色符号
5)右键单击该DLL,然后转到Property
6)找到Specific Version = True替换为Specific Version = False

,然后将Copy Local = False更改为Copy Local = True

答案 7 :(得分:0)

对我来说,它是“首选32位”:清除该复选框允许CLR加载Crystal Reports 64位运行时(仅安装了一个)。

答案 8 :(得分:0)

CR已更改程序集的版本号。旧版本是13.0.2000.0(这是一个不兼容的版本问题)。新版本是13.0.3500.0或13.0.4000.0-这是针对我的Visual Studio 2019和.net 4.7.2和Window Server 2019的测试用例。您需要打开所有项目,删除旧的dll引用并添加新的参考。然后再次构建应用程序。

我从消息来源中学到:

enter image description here

要删除:右键单击引用下的部件以将其删除。

enter image description here

这是错误的出处-这正是错误消息的输出:

错误消息:

无法加载文件或程序集...找到的程序集清单 定义与程序集引用不匹配...

位置错误消息指的是:

“ C:\ Visual-Studio-2019-Proj \ Proj Windows库存\ Proj Windows Inventory \ obj \ x86 \ Debug \ Press HDL Windows Inventory.exe.manifest“

它看起来像这样:

-。net 3.5和CReports version =“ 13.0.2000.0”和VS2012的较旧版本:

<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="CrystalDecisions.CrystalReports.Engine.dll" size="372736">
      <assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" version="13.0.2000.0" publicKeyToken="692FBEA5521E1304" language="neutral" processorArchitecture="msil" />

-。net 4.7.2和CReport version =“ 13.0.4000.0”和VS2019的较新版本:

<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="CrystalDecisions.CrystalReports.Engine.dll" size="373248">
      <assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" version="13.0.4000.0" publicKeyToken="692FBEA5521E1304" language="neutral" processorArchitecture="msil" />

答案 9 :(得分:0)

For visual studio 2019 
change the code in aspx.cs page

    <%@ Register Assembly="CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
        Namespace="CrystalDecisions.Web" TagPrefix="CR" %>

in web config:

    <configSections>
        <sectionGroup name="businessObjects">
          <sectionGroup name="crystalReports">
            <section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null"/>
          </sectionGroup>
        </sectionGroup>
      </configSections>


 <assemblies>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.ReportSource, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.Shared, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <add assembly="Microsoft.ReportViewer.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.ReportSource, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.Shared, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
      </assemblies>

 <buildProviders>
        <add extension=".rpt" type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
      </buildProviders>

答案 10 :(得分:-1)

如果对项目具有,并且“复制本地”标志为true,则解决方案应仅是项目。将DLL复制到bin文件夹。