我在Visual Studio 2008上创建了我的项目,以及它上面的RDLC文件。 但现在,当我在Visual Studio 2010上打开解决方案并想要打开RDLC文件时,它会向我显示警告。
这有点好笑。该报告是在VS2008上创建的,VS2010要求转换为2008格式。也许在我的VS2008安装中出现了一个问题,即使用一些古老的格式创建了RDLC文件(2005 ??!)
问题是,当您使用“确定”按钮确认时,执行一些设计调整并运行应用程序,它会在“主报表”上引发错误:
ex.InnerException
{"The definition of the report 'Main Report' is invalid."}
[Microsoft.Reporting.DefinitionInvalidException]: {"The definition of the report 'Main Report' is invalid."}
Data: {System.Collections.ListDictionaryInternal}
HelpLink: null
InnerException: {"The report definition is not valid. Details: The report definition has an invalid target namespace 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded."}
Message: "The definition of the report 'Main Report' is invalid."
Source: "Microsoft.ReportViewer.Common"
StackTrace: " at Microsoft.Reporting.ReportCompiler.CompileReport(CatalogItemContext context, Byte[] reportDefinition, Boolean generateExpressionHostWithRefusedPermissions, ReportSnapshotBase& snapshot)\r\n at Microsoft.Reporting.StandalonePreviewStore.StoredReport.CompileReport()\r\n at Microsoft.Reporting.StandalonePreviewStore.StoredReport.get_Snapshot()\r\n at Microsoft.Reporting.StandalonePreviewStore.GetCompiledReport(CatalogItemContext context, Boolean rebuild, ReportSnapshotBase& snapshot)\r\n at Microsoft.Reporting.LocalService.GetCompiledReport(CatalogItemContext itemContext, Boolean rebuild, ReportSnapshotBase& snapshot)\r\n at Microsoft.Reporting.LocalService.CompileReport(CatalogItemContext itemContext, Boolean rebuild)\r\n at Microsoft.Reporting.WinForms.LocalReport.CompileReport()"
TargetSite: {Microsoft.ReportingServices.ReportProcessing.PublishingResult CompileReport(Microsoft.ReportingServices.Diagnostics.CatalogItemContext, Byte[], Boolean, Microsoft.ReportingServices.Library.ReportSnapshotBase ByRef)}
答案 0 :(得分:10)
在将早期版本的rdlc转换为VS2010时,我遇到了类似的问题。转换很好,需要做的是对Microsoft.ReportViwer.Common的引用必须从版本9更改为版本10.对Microsoft.ReportViewer.WebForms也一样。您还需要将web.config和包含ReportViewer控件的页面中的版本9的所有引用更改为版本10.这解决了我的所有问题,并且能够在VS2010中修改报告。
答案 1 :(得分:5)
这比设置为答案的回复简单得多......
您需要做的就是从项目中删除对ReportViewer的引用(因为它们仍然指向版本9),然后转到添加引用并选择版本为10的ReportViewer引用。
答案 2 :(得分:2)
只是为了清除你对版本的困惑:
发布Visual Studio 2008时,未发布RDL 2008架构。因此VS 2008仅支持RDL 2005架构。 VS 2010支持RDL 2008架构.RRD架构比Visual Studio版本落后一个版本,正如您所看到的,它有时是导致混淆的根本原因。
答案 3 :(得分:1)
这是一种解决方法。
不要在VS2010中转换或编辑您的报告(那里有错误)
安装Report Viewer 2008安装
SQL Server Business Intelligence Studio 2008
在SQL Server商业智能中,为报告创建一个空项目
将文件扩展名重命名为.rdl,在此项目中添加现有的rdl文件。
构建和部署项目
答案 4 :(得分:0)
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
</httpHandlers>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</handlers>
</system.webServer>