【问题标题】:Visual Studio 2010: The report definition is not valid. Details: The report definition has an invalid targetVisual Studio 2010:报表定义无效。详细信息:报告定义的目标无效
【发布时间】:2013-06-21 20:24:36
【问题描述】:

Re:报告定义无效。详细信息:报告定义的目标命名空间“http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition”无效,无法升级。

需要报告专家,请继续...

这是我今天完成这个愚蠢的步骤。

1) Visual Studio 2010,带有 SQL Server 2012

2) App是一个winforms vb.net,一直运行良好,最初是在VS 2008开发的

报告在我收到之前运行良好。 -叹气-

3) 尝试编辑一些报告 - 升级到 SQL 2012 后的第一次。

4) 无法编辑数据集并确定某些内容已损坏。

5) 在 VS 2010 上运行修复安装并确保它是完全最新的。不高兴 - 无法更新数据集。

6) 重新运行 SQL SSMS 安装并添加用于连接客户端的 SDK

7) 现在我可以编辑报表数据集,但报表已损坏。 (见标题)-双重叹息-

报表查看器是 10.0.0

.Net 是 4.0

感谢任何提示

麦卡斯基

【问题讨论】:

    标签: .net visual-studio-2010 reporting-services report-designer


    【解决方案1】:

    我今天在 VS2013 中遇到了这个问题。

    请务必引用正确的 ReportViewer dll 版本:

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\ReportViewer\

    【讨论】:

    • 优秀。这正是问题所在。在我的情况下工作。非常感谢:)!
    【解决方案2】:

    如果我没记错的话,我认为修复可能比您预期的要简单。您的名称空间只需要更改以引用较新的服务。据我所知,您不能在 2008 命名空间上运行 2012。当您提到“Winforms”应用程序时,我感到困惑,该应用程序通过通常以多种方式设置的查看器间接与 SQL 报告服务进行对话。如果是这种情况,请按照下面的 A 进行操作,但是您提到直接编辑报告,所以我很好奇这些客户端报告是否直接在应用程序中?如果是这样,我会假设您正在谈论带有 RDL 报告的 SSRS 2012,在这种情况下,如果这是使用商业智能开发工作室创建的报告托管报告,我会尝试使用 B,添加在 SQL 2012 创建的 VS 2010 上。如果您谈论的是本地存储在 VB.NET 应用程序中的客户端报告,我可能会猜测它们可能已升级到使用 .NET 4.5 的 2012 年,并且您可能正在尝试较低的框架,但这只是对最后一个的猜测而且不太可能,因为 .NET 带有以前的版本,而且我认为它不会在不告诉你的情况下升级报告。

    答:

    您可以永远重新安装 2012,但不能让它使用 2008 的命名空间来存储数据。您需要使用 2012 年有效服务中的最新代理类,并将它们放入您的 C#/VB.NET 项目中。如果您不确定如何下载和调整代理类,我在这里有一个更详细的主题:Programmatically Export SSRS report from sharepoint using ReportService2010.asmx

    // 
    // This source code was auto-generated by xsd, Version=4.0.30319.17929.
    // 
    namespace SampleRDLSchema {
        using System.Xml.Serialization;
    
     /// <remarks/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition")]
        [System.Xml.Serialization.XmlRootAttribute(Namespace="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition", IsNullable=false)]
    

    B.

    1. 在磁盘上查找“RDL”报告的本地副本并将其复制。
    2. 获取副本并使用文本编辑器打开它,我会使用 Notepad++ 或类似的东西。
    3. 对我来说,RDL 作为一种语言并没有真正改变太多,(我什至看不到 2008R2 和 2012 之间设计器的差异)。所以沿着这条线,你可以尝试破解,看看它是否可以工作。将顶部附近的“

      < Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
      

    【讨论】:

      【解决方案3】:

      Mário Meyrelles 是对的。

      这都是关于 Microsoft.ReportViewer.Common.dll 和 Microsoft.ReportViewer.WinForms.dll 版本的。请确保您引用了正确或最新的 dll 版本。例如对于 VS2013,我们应该使用版本 11。

      C:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\11.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.Common.dll

      C:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WinForms\11.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.WinForms.dll

      【讨论】:

        【解决方案4】:

        我已经使用 SQL2008 R2 启动了一个报告项目,并且所有项目文件都使用了架构:

        <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/
        

        我的报告服务器是 SQL2008 NOT R2,部署报告导致错误:

        报告定义无效。详细信息:报告定义的目标命名空间无效

        诀窍是将项目 TargetServerVersion 设置为 SQL 2008 和 Build。然后 Bin\Release 文件夹中的所有文件都将具有正确的架构,例如

        <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-18
          • 1970-01-01
          • 1970-01-01
          • 2017-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多