Search code examples
reporting-servicesvisual-studio-2015ssdt-bi

Can I control the version of new SSDT reports in Visual Studio?


I am using the Visual Studio SSDT BI add-on to create reports for SQL Server Reporting Services. The project I've created is configured to target SQL Server versions 2008/2012/2014, since those are the target SQL Servers our customers have.

However, the report files being created within Visual Studio all appear to be targeting SQL Server 2016. If I copy the rdl files to another server and upload them via the browser, I am told that they are from a newer version of SSRS and can't be uploaded.

The problem is the twofold:

  1. The <Report> tag contains a new 2016 namespace that replaces the 2010 one that existed in previous versions:

    <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/2016/01/reportdefinition">
    
  2. The new file format includes a parameters layout section that is defined in the 2016 namespace, but not in the 2010 one:

     <ReportParametersLayout>
                .
                .
                .
     </ReportParametersLayout>
    

If I change the namespace back to 2010 and remove the ReportParametersLayout section, the report works just fine in SQL 2012, but Visual Studio will put it back the next time I open the report.

(Interestingly, if I deploy the reports directly from VS, I get a warning that the parameter layout is unsupported in 2012 and being removed, which implies that Visual Studio is fixing up the report definitions on the fly.)

Is there any way to force VS to leave the report files in the previous versions format?


Solution

  • This is by design.

    See https://connect.microsoft.com/SQLServer/Feedback/Details/2103422

    Posted by Riccardo [MSFT] on 12/18/2015 at 5:07 PM
    By design, TargetServerVersion affects build output files, not source files. You deploy the build output files (which you can grab from the \bin\Debug or \bin\Release folder within your project) rather than the source files.