Ssrs 2008 在本地报表中使用自定义代码和子报表时,RDL与RDLC的问题

Ssrs 2008 在本地报表中使用自定义代码和子报表时,RDL与RDLC的问题,ssrs-2008,rdlc,rdl,report-viewer2010,localreport,Ssrs 2008,Rdlc,Rdl,Report Viewer2010,Localreport,我对SSR有一个相当复杂的问题 首先,我们使用本地报告。我们必须这样做,因为我们使用的数据来自rest服务 其次,我们已经为我们想要使用的报告构建了一个名为ReportFunctions的定制库 我们使用sql server数据工具构建.rdl(不要与RDLC混淆),然后将该文件复制到VS项目中。我们将构建操作设置为内容,如果更新,则复制 这对于我们所有的基本报告都非常有效。我们甚至可以使用自定义库 现在,我们想使用其中一些基本报告作为子报告。让我们将此报告称为“所有报告”。它由“总结报告”和“

我对SSR有一个相当复杂的问题

首先,我们使用本地报告。我们必须这样做,因为我们使用的数据来自rest服务

其次,我们已经为我们想要使用的报告构建了一个名为ReportFunctions的定制库

我们使用sql server数据工具构建.rdl(不要与RDLC混淆),然后将该文件复制到VS项目中。我们将构建操作设置为内容,如果更新,则复制

这对于我们所有的基本报告都非常有效。我们甚至可以使用自定义库

现在,我们想使用其中一些基本报告作为子报告。让我们将此报告称为“所有报告”。它由“总结报告”和“详细报告”组成

Summary和Detail是两个RDL文件,也需要单独加载

在构建所有报告的代码中,我有以下内容:

reportViewer.LocalReport.SubreportProcessing += LocalReport_SubreportProcessing;

reportViewer.LocalReport.LoadSubreportDefinition("SummaryReport", File.OpenText(Server.MapPath("SummaryReport.rdl")));
reportViewer.LocalReport.LoadSubreportDefinition("DetailReport", File.OpenText(Server.MapPath("DetailReport.rdl")));

private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
    //Set e.DataSources here depending on e.ReportPath
}
当我运行SummaryReport或DetailReport时,它们工作正常。当我运行所有报告时,我得到一个错误:

在指定位置C:\path\to\my\project\Reports\SummaryReport.rdlc找不到子报表“SummarySubreport”。请验证子报表是否已发布以及名称是否正确

为了好玩,我将两个子报表的扩展名切换到了.rdlc,然后在visual studio中编译时出现了一个生成错误:

加载代码模块时出错:“ReportFunctions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=d88351e3d4dffe2f”。详细信息:无法加载文件或程序集的“ReportFunctions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=d88351e3d4dffe2f”或其依赖项之一。系统找不到指定的文件

DetailReport是使用外部自定义函数库的报表

我不能将我的DLL放在服务器上的任何位置,除非放在项目的bin中。我强调得太多了。我也无法移动到服务器报告。我必须使用本地报告

如果我在RDLC上将构建操作设置为“无”,它会工作,但是当我部署RDLC时,我的RDLC不会发布


我可以让RDLC编译吗?让报表查看器对我的子报表使用RDL而不是RDLC,我缺少了什么?

在处理这个问题11个小时后,我发现生成服务器在生成所有库时都在为它们分配修订号。因此,本地ReportFunctions的版本为1.0.0.0,一切都很酷。然后,当它被部署时,构建服务器将完成它的工作,并且报告将中断

对于其他有此问题的人,请检查已编译DLL的版本号,尤其是在使用生成过程时

此外,为了避免RDLC的编译问题,我们将构建操作切换为“无”,并设置构建服务器,以便在构建成功后手动复制任何RDLC文件