DEV Community

IronSoftware
IronSoftware

Posted on

RDLC and ReportViewer on .NET 10: Who Owns the Package?

Search nuget.org for reportviewer and you get 104 packages. Two carry the verified-owner badge and are published by Microsoft, both version 150.1652.0, both republished 3 June 2024, and both targeting net40 through net481 with no .NET Core or .NET 5 target in either. The most-downloaded results are not those two. Package provenance is a boring thing to audit until it is the only thing between a report pipeline and a dependency nobody supports, which is a different position from IronPDF turning the same data into a PDF under a named publisher.

Our team at Iron Software builds IronPDF, and this read examines what RDLC's missing modern-.NET ReportViewer costs a project, and how IronPDF renders the same markup to a PDF from one supported package.

How Far Does Local Report Processing Reach?

Local report processing covers one job, and it covers it entirely inside the application.

It ships under Microsoft's own redistribution terms, which is part of why so many .NET Framework codebases already have it. It is also fully embedded, because local processing mode means, in Microsoft's own phrasing, that the ReportViewer control processes the report only and the host application must retrieve the data and supply it. No report server, no catalog database, no web portal, nothing to install or patch beyond the application itself. IronPDF matches that with no server either, on the .NET versions ReportViewer never reached.

using Microsoft.Reporting.WinForms;

var invoiceReport = new LocalReport { ReportPath = "Invoice.rdlc" };
invoiceReport.DataSources.Add(new ReportDataSource("InvoiceDataSet", invoiceRows));

byte[] pdfBytes = invoiceReport.Render("PDF");
File.WriteAllBytes("invoice.pdf", pdfBytes);
Enter fullscreen mode Exit fullscreen mode

That returns a PDF byte array with no network call in the path, which is what an offline line-of-business application wants. For a WinForms or WPF application on Windows against .NET Framework, this remains a reasonable fit, and Microsoft has not stopped maintaining it. Both owned packages were republished in June 2024, and the RDLC Report Designer extension on the Visual Studio Marketplace is published under a domain-verified Microsoft publisher with over 1.3 million installs. Those updates are the ceiling of what the packages offer, because they stop at .NET Framework while IronPDF's current build targets .NET 10.

Which .NET Targets Still Get an Official ReportViewer?

With no report server, scheduler, or analyst-facing portal in the picture, the comparison narrows to how a PDF gets produced.

Capability (PDF output path only) RDLC via ReportViewer, local processing IronPDF
Renders to a PDF file LocalReport.Render("PDF") ChromePdfRenderer.RenderHtmlAsPdf
Input types the call accepts 1, an .rdlc compiled into the project 4, markup, a file, a URL, or a Razor view
HTML rendering engine Internal RDL renderer, fixed tag and CSS subset Chromium, full CSS and JavaScript
Officially supported targets net40 through net481 .NET Framework 4.6.2 through .NET 10
Headless rendering with no viewer control Community port only Native, PdfDocument returned directly
Linux and container support Community port only, and images need a workaround Native, images included

Table 1. PDF output path only, local RDLC processing against IronPDF, excluding the in-app viewer and report designer.

Three pieces of evidence sit behind the middle rows.

First, no officially supported ASP.NET Core ReportViewer exists at all, and a team that only needs the PDF still cannot process an .rdlc on .NET 6 or later using a package Microsoft publishes. The working option, ReportViewerCore.NETCore, is maintained by an individual developer, currently at version 15.1.33 published 20 January 2026 with 3.6 million downloads, and its NuGet description opens by stating the project is not supported or developed by Microsoft. Its GitHub README is more specific still, explaining that the source comes from decompiling Report Viewer for WinForms version 15.0.1404.0 using ILSpy, and adding that while decompiling and modifying it for compatibility reasons is legal in the maintainer's local jurisdiction, redistributing a modified version most likely is not, so it should be used at your own risk. The maintainer is being straight with people. The forum answers recommending the package rarely quote that passage at all.

Second, images break off Windows. Local report rendering depends on System.Drawing.Common for anything past plain text, and that has been Windows-only since .NET 6, throwing PlatformNotSupportedException elsewhere unless a compatibility switch is set. Microsoft's own breaking-change documentation states that the switch, System.Drawing.EnableUnixSupport, is available only in .NET 6 and was removed in .NET 7. A report with a logo that renders on a Windows build agent fails the moment that pipeline moves into a Linux container on .NET 7 or later, where IronPDF keeps image handling inside the same render call rather than a platform dependency.

Third, two package names circulating as the fix do not hold up. Microsoft.ReportingServices.ReportViewer.NetCore, recommended in forum answers including on Microsoft's own Q&A site, does not exist on nuget.org. AspNetCore.Reporting was last published in August 2018 with a description still saying the package is not finished yet. Separately, the standalone Microsoft Report Viewer 2015 Runtime redistributable that older deployments install outside NuGet reached the end of extended support on 14 October 2025, with no newer standalone runtime announced. On security the record is quiet, because an NVD keyword search for ReportViewer turns up no CVE naming the control or either owned package. Older write-ups citing GDI+ vulnerabilities against this control are pointing at the Windows graphics stack of that era, and a clean CVE record is not the exposure that matters here anyway. The exposure is a production PDF path whose only modern-.NET implementation is a decompiled binary carrying an unresolved redistribution question.

Does One Package Cover Every Target You Ship?

If what the project owes its users is a PDF built from data and a template the application controls, the report definition and the viewer control both drop out of the path.

using IronPdf;

var invoiceRenderer = new ChromePdfRenderer();
using PdfDocument invoice = invoiceRenderer.RenderHtmlAsPdf(invoiceHtml);

// Same object handles the assembly step an .rdlc subreport would have covered
using PdfDocument packet = PdfDocument.Merge(coverSheet, invoice);
packet.SaveAs("invoice-packet.pdf");
Enter fullscreen mode Exit fullscreen mode

IronPDF runs on .NET Framework 4.6.2 through .NET 10, on Windows, Linux, and macOS, in a container or not, through one package with a named publisher behind it. Where an MVC view already produces the markup, the same renderer takes the Razor view directly, and the merging, splitting, encrypting, and stamping surface is documented in the API reference.

The boundary is plain. This is not a replacement for ReportViewer when the requirement is an interactive report a user pages through inside a desktop application, with parameter prompts, a viewer control, and drill-down navigation the user drives. There is no viewer control here and none planned. RDLC's ceiling is the framework it was built for rather than its quality, because on .NET Framework it stays offline, maintained, and fit for that codebase, and the honest recommendation there is to leave it alone. What changes is the day a project moves off .NET Framework, since migrating the reports later then means adopting a decompiled community port whose own maintainer flags redistribution as unresolved. That decision is worth making deliberately, with the provenance in front of you. The pattern for moving the export step to a renderer is written up if that is where you land, and IronPDF has a free trial for running one of your existing .rdlc outputs against an HTML template first.

Have you had to make this call on a project leaving .NET Framework? Tell us in the comments how it went, especially if you ended up shipping ReportViewerCore.NETCore to production and how the licensing question got answered internally.

Microsoft, ReportViewer, and RDLC are Microsoft trademarks and this piece is not affiliated with Microsoft. The package ownership, version, lifecycle, and platform details above are drawn from nuget.org, Microsoft Learn, the Visual Studio Marketplace, and the ReportViewerCore repository as they stood at the time of writing. If a detail has changed since, correct us in the comments.

Top comments (0)