Table of Contents

Class ReportDefinitionUpgrade

Namespace
DocWright.Reporting
Assembly
DocWright.Reporting.dll

Upgrades a report definition to a later version of the report-definition schema — the "upgrade report" a designer offers, done the way Microsoft's own upgrader does it.

public static class ReportDefinitionUpgrade
Inheritance
ReportDefinitionUpgrade
Inherited Members

Remarks

The writer keeps a definition in the version it was read in, which stays the default: a 2008 report saved as 2016 no longer opens on SSRS 2008. Upgrading is a separate, explicit call, and returns a new definition; the one passed in is not changed.

Measured against Microsoft's upgrader (RDLUpgrader.UpgradeToCurrent inside the ReportViewer engine, the path Report Builder's save takes; Phase 83, tests/fixtures/rdl/upgrade). For every probe, the result validates against the target schema, has the structure Microsoft's has, and renders as Microsoft's renders in its engine. What it does not copy is the engine serializer's habit of leaving out every property at its default value — a black 1pt border, a Top of 0in — which changes nothing a report shows.

Every version: the namespace of every element; to 2010 and later, Body, Width and Page into ReportSections; to 2016, the parameter pane's grid. From 2005, also: page properties into Page, text box values into paragraphs, per-side border properties into border elements, and Table, List and Matrix into Tablix, subtotals included.

A 2005 chart or custom report item is kept in its 2005 shape and reported (DXP9308), never dropped: Microsoft's upgrader itself throws on a minimal 2005 chart, so there is no measured shape to convert it to. So are report items nested past 256 levels, which a definition built in code can reach.

Methods

Upgrade(ReportDefinition, ReportSchemaVersion, IConversionDiagnostics?)

Upgrades a definition to a later schema version.