Visual Studio 2010要求将在VS2008上创建的RDLC转换为RDLC 2008格式?

时间:2010-05-25 16:46:22

标签: visual-studio-2008 visual-studio-2010 rdlc reportviewer2008

我在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)}

5 个答案:

答案 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>