5

我的项目中有 ReportViewer。当我在 Vsual Studio 2012 的 InstallShield 中创建此文件的 .exe 时,我将其添加到Redistributables Microsoft ReportViewer 2010.

当我在 Windows 8 上安装我的应用程序时 - 每个 ReportViewer 都会正确显示它的报告。

我在Windows XP正确加载 ReportViewer 时遇到问题,但显示此错误而不是正确的报告:

本地报告处理过程中发生错误。报告“的定义无效。报告处理中出现意外错误。

无法加载文件或程序集 Microsoft.ReportViewer.ProcessingObjectMode。版本 =11.0.0.、Culture=neutral、PublicKeyToken=89845dc8080cc91 或其依赖项之一。此系统找不到指定的文件。

我向你保证,在references I have added Microsoft.ReportViewer.Winfroms 11.0.0.0Copy Local = true

我该如何解决这个问题?

4

4 回答 4

16

我赞成标记为答案的回复,因为事实上我缺少 .dll - 但我没有按照@Marek 建议的方式修复它。我正在使用 VS2013 并安装 Microsoft.Reporting nuget 包解决了这个问题。我会建议任何有这个问题的人尝试这个。这样,您将自动获得所有依赖项。

在此处输入图像描述

于 2015-04-08T13:46:14.940 回答
12

发现这个错误意味着你失踪了Microsoft.ReportViewer.PorcessingObjectMode.dll version 11.0.0.0。有一个解决方案:

在您的Windows 8机器上执行以下操作:

  1. 打开 dos 命令提示符(按 START + R 然后键入 cmd 并按 ENTER)

  2. 键入cd ..直到您在C:\ >键入Cd windows\assembly\gac_msil\Microsoft.ReportViewer.pro*并按回车键

  3. 只需键入cd 11*

  4. 然后输入copy * c:\

  5. .dll被复制到您的C目录中。

  6. 该文件只需复制到您Program Files安装Windows XP machine应用程序的文件夹中。

希望它对其他人有所帮助,因为我长期以来一直在关注这个问题。

于 2013-08-24T07:36:29.567 回答
2

Marek 的回答很好并且帮助了我,我只是想添加一个我需要的附加文件。此外

Microsoft.ReportViewer.ProcessingObjectModel.dll

我也需要

Microsoft.SqlServer.Types.dll

(我从一个有 SQLServer 但没有 Reporting Services的服务器上运行它,所以也许这就是第二个文件丢失的原因。)

正如 Marek 指出的那样,您需要使用命令提示符复制文件,因为 GAC_MSIL 中的 DLL 在 Windows 资源管理器中是隐藏的,因此如果您使用资源管理器搜索它们,您将看不到它们。我被难住了,因为我正在生成一个包含日常任务的 PDF,所以我在日志文件中看到的只是"An error occurred during local report processing."我从未见过 ReportViewer 的脸的神秘错误,它至少告诉你丢失的文件。

为了解决这个问题,我创建了一个快速测试程序并显示了 ReportViewer,这使得我需要哪些 DLL 更加清晰: 在此处输入图像描述

于 2015-03-31T00:17:55.130 回答
1

一开始

必须安装'Microsoft.Report.Viewer''ReportViewer.WebForms''Microsoft.ReportViewer.WinForms''Microsoft.SqlServer.Types' 的nuget

https://www.nuget.org/packages/ReportViewer.WebForms/

https://www.nuget.org/packages/Microsoft.ReportViewer.WinForms/

https://www.nuget.org/packages/Microsoft.Report.Viewer/

https://www.nuget.org/packages/Microsoft.SqlServer.Types/

然后应该检查 web.config 的一些标签

<system.web>
    <compilation debug="true" targetFramework="4.5">
        <buildProviders>
            <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
        </buildProviders>
        <assemblies>
            <add assembly="Microsoft.ReportViewer.Common, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
            <add assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
        </assemblies>
    </compilation>
    <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" validate="false" />

    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
<system.webServer>
    <handlers>
        <add name="ReportViewerWebControlHandler" verb="*" path="Reserved.ReportViewerWebControl.axd" preCondition="integratedMode" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
    </handlers>
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
于 2019-02-06T08:45:08.383 回答