Class ReportDefinitionUpgrade
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.