Majorsilence.Reporting.EncryptionProvider 27.0.0-alpha.2

This is a prerelease version of Majorsilence.Reporting.EncryptionProvider.
dotnet add package Majorsilence.Reporting.EncryptionProvider --version 27.0.0-alpha.2
                    
NuGet\Install-Package Majorsilence.Reporting.EncryptionProvider -Version 27.0.0-alpha.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Majorsilence.Reporting.EncryptionProvider" Version="27.0.0-alpha.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Majorsilence.Reporting.EncryptionProvider" Version="27.0.0-alpha.2" />
                    
Directory.Packages.props
<PackageReference Include="Majorsilence.Reporting.EncryptionProvider" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Majorsilence.Reporting.EncryptionProvider --version 27.0.0-alpha.2
                    
#r "nuget: Majorsilence.Reporting.EncryptionProvider, 27.0.0-alpha.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Majorsilence.Reporting.EncryptionProvider@27.0.0-alpha.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Majorsilence.Reporting.EncryptionProvider&version=27.0.0-alpha.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Majorsilence.Reporting.EncryptionProvider&version=27.0.0-alpha.2&prerelease
                    
Install as a Cake Tool

Majorsilence Reporting (formerly My-FyiReporting)

Majorsilence Reporting is an open-source .NET reporting framework for building, rendering, and viewing RDL-based reports — a self-hosted alternative to SQL Server Reporting Services (SSRS) and Crystal Reports. It targets .NET 8 and .NET 10, renders reports to PDF and other formats from a variety of data sources, and ships both a fluent C# API for generating reports and a Windows drag-and-drop visual designer.

NuGet License linux mac windows

dotnet add package Majorsilence.Reporting.RdlCreator.SkiaSharp
dotnet add package Majorsilence.Reporting.RdlEngine.SkiaSharp
dotnet add package Majorsilence.Reporting.RdlCri.SkiaSharp

The core engine, report designer, and report viewer all support Linux, macOS, and Windows — the designer and viewer are built on Majorsilence.Forms, a cross-platform WinForms-API-compatible framework. Existing System.Windows.Forms host apps can still embed them as real WinForms controls via Majorsilence.Forms.WinForms's ToWinFormsControl(), WPF, Avalonia, Uno, GTK 4 and terminal hosts follow the same pattern (see Hosting in your UI framework).

If you have any question about Majorsilence Reporting or want to discuss it, a discussion group is available here:

https://github.com/majorsilence/Reporting/discussions

Documentation

See the projects wiki.

Download

See the downloads page.

Alternatively if you want keep up with the latest version you can always use Git

git clone https://github.com/majorsilence/Reporting.git

Quick start

Add the NuGet packages above to your project.

If running on linux install the required fonts.

sudo apt install ttf-mscorefonts-installer

Custom fonts for PDF export

Fonts shipped with your app, or kept in a folder the renderer does not scan, can be registered once at startup, before rendering. Registrations are process-wide.

using Majorsilence.Reporting.Rdl;

PdfFonts.RegisterFont("MICR Encoding", regular: "/app/fonts/MICREncoding.ttf");
PdfFonts.RegisterFontDirectory("/app/fonts");     // each font under the family it declares
PdfFonts.AddFallbackFamily("Noto Sans CJK JP");   // tried before the built-in fallbacks

A family you register replaces an installed one of the same name. Without code (RdlCmd, RdlMcp), set MAJORSILENCE_PDF_FONT_DIRS to a list of font folders separated by : (; on Windows).

You are now ready to create and generate reports.

c# example, create report, connected to an sql database

See Database Providers.

using Majorsilence.Reporting.RdlCreator;

// One time per app instance
RdlEngineConfig.RdlEngineConfigInit();

string dataProvider = "[PLACEHOLDER/Json/Microsoft.Data.SqlClient/MySQL.NET/Firebird.NET 2.0/Microsoft.Data.Sqlite/PostgreSQL";
var create = new Majorsilence.Reporting.RdlCreator.Create();

using var report = await create.GenerateRdl(dataProvider,
    connectionString,
    "SELECT CategoryID, CategoryName, Description FROM Categories",
    pageHeaderText: "DataProviderTest TestMethod1");

string filepath = System.IO.Path.Combine(Environment.CurrentDirectory, "PLACEHOLDER.pdf");
using var ofs = new Majorsilence.Reporting.Rdl.OneFileStreamGen(filepath, true);
await report.RunGetData(null);
await report.RunRender(ofs, Majorsilence.Reporting.Rdl.OutputPresentationType.PDF);

c# example, create a pdf document

using Majorsilence.Reporting.RdlCreator;

// One time per app instance
RdlEngineConfig.RdlEngineConfigInit();

var document = new Majorsilence.Reporting.RdlCreator.Document()
{
    Description = "Sample report",
    Author = "John Doe",
    PageHeight = "11in",
    PageWidth = "8.5in",
    //Width = "7.5in",
    TopMargin = ".25in",
    LeftMargin = ".25in",
    RightMargin = ".25in",
    BottomMargin = ".25in"
}
.WithPage((page) =>
{
    page.WithHeight("10in")
    .WithWidth("7.5in")
    .WithText(new Text
    {
        Name = "TheSimplePageText",
        Top = ".1in",
        Left = ".1in",
        Width = "6in",
        Height = ".25in",
        Value = new Value { Text = "Text Area 1" },
        Style = new Style { FontSize = "12pt", FontWeight = "Bold" }
    });
});

using var fileStream = new FileStream("PLACEHOLDER.pdf", FileMode.Create, FileAccess.Write);
await document.Create(fileStream);

c# load an existing rdl report via RdlEngine

note: Notice the namespace and type difference of Majorsilence.Reporting.RdlCreator.Report for creating new rdl reports versus Majorsilence.Reporting.Rdl.Report for running a report.

using Majorsilence.Reporting.Rdl;

// One time per app instance
RdlEngineConfig.RdlEngineConfigInit();

var rdlp = new RDLParser(System.IO.File.ReadAllText(@"C:\path\to\report\file.rdl"));
using var report = await rdlp.Parse();

string filepath = System.IO.Path.Combine(Environment.CurrentDirectory, "PLACEHOLDER.pdf");
using var ofs = new Majorsilence.Reporting.Rdl.OneFileStreamGen(filepath, true);
await report.RunGetData(null);
await report.RunRender(ofs, Majorsilence.Reporting.Rdl.OutputPresentationType.PDF);

Development

Majorsilence Reporting is developed with the following workflow:

  • Nothing happens for weeks or months
  • Someone needs it to do something it doesn't already do
  • That person implements that something and submits a pull request
  • Repeat

If it doesn't have a feature that you want it to have, add it. If it has a bug you need fixed, fix it.

See Contribute.

Branches and releases

Versions are year.release.build.

Branch Purpose
release/26.0.x Stable 26.0.x line. Only bug fixes and security fixes. Tagged v26.0.N.
main Development toward the 27.x.x releases planned for 2027. Includes the modernization work.
  • Fixes for the stable line target release/26.0.x and are then merged or cherry-picked forward into main.
  • New features and breaking changes target main.

Benchmarks

one

BenchmarkDotNet v0.15.2, macOS 26.0.1 (25A362) [Darwin 25.0.0] Apple M2, 1 CPU, 8 logical and 8 physical cores .NET SDK 9.0.200 [Host] : .NET 8.0.13 (8.0.1325.6609), Arm64 RyuJIT AdvSIMD Job-AKATUD : .NET 8.0.13 (8.0.1325.6609), Arm64 RyuJIT AdvSIMD

BuildConfiguration=Release-DrawingCompat RunStrategy=Throughput

Method Mean Error StdDev Ratio RatioSD Gen0 Gen1 Allocated Alloc Ratio
NestedJson 5.401 ms 0.0560 ms 0.0935 ms 0.99 0.03 390.6250 125.0000 3.12 MB 1.00
Threads Duration Source Calls/Sec Total Calls Errors
1 30 JsonDataProviderBenchmark 162 4,873 0
20 30 JsonDataProviderBenchmark 362 10,865 0
20 30 JsonDataProviderBenchmark 363 10,894 0
30 30 JsonDataProviderBenchmark 334 10,043 0
40 30 JsonDataProviderBenchmark 316 9,497 0
50 30 JsonDataProviderBenchmark 296 8,905 0

two

BenchmarkDotNet v0.15.2, Windows 11 (10.0.26100.6584/24H2/2024Update/HudsonValley) Intel Core i5-8350U CPU 1.70GHz (Max: 1.90GHz) (Kaby Lake R), 1 CPU, 8 logical and 4 physical cores .NET SDK 8.0.414 [Host] : .NET 8.0.20 (8.0.2025.41914), X64 RyuJIT AVX2 Job-AKATUD : .NET 8.0.20 (8.0.2025.41914), X64 RyuJIT AVX2

BuildConfiguration=Release-DrawingCompat RunStrategy=Throughput

Method Mean Error StdDev Median Ratio RatioSD Gen0 Gen1 Allocated Alloc Ratio
NestedJson 16.67 ms 0.796 ms 2.140 ms 15.84 ms 1.01 0.17 727.2727 272.7273 3.24 MB 1.00
Threads Duration Source Calls/Sec Total Calls Errors
1 30 JsonDataProviderBenchmark 34 1,009 0
20 30 JsonDataProviderBenchmark 64 1,920 0
20 30 JsonDataProviderBenchmark 63 1,893 0
30 30 JsonDataProviderBenchmark 58 1,739 0
40 30 JsonDataProviderBenchmark 49 1,497 0
50 30 JsonDataProviderBenchmark 51 1,546 0

three

BenchmarkDotNet v0.15.2, Linux Ubuntu 24.04.3 LTS (Noble Numbat) AMD Ryzen 5 3600 4.21GHz, 1 CPU, 12 logical and 6 physical cores .NET SDK 8.0.120 [Host] : .NET 8.0.20 (8.0.2025.41914), X64 RyuJIT AVX2 Job-AKATUD : .NET 8.0.20 (8.0.2025.41914), X64 RyuJIT AVX2

BuildConfiguration=Release-DrawingCompat RunStrategy=Throughput

Method Mean Error StdDev Ratio RatioSD Gen0 Gen1 Allocated Alloc Ratio
NestedJson 5.542 ms 0.1100 ms 0.2011 ms 1.00 0.05 359.3750 125.0000 2.94 MB 1.00
Threads Duration Source Calls/Sec Total Calls Errors
1 30 JsonDataProviderBenchmark 152 4,571 0
20 30 JsonDataProviderBenchmark 403 12,115 0
20 30 JsonDataProviderBenchmark 406 12,196 0
30 30 JsonDataProviderBenchmark 358 10,757 0
40 30 JsonDataProviderBenchmark 315 9,460 0
50 30 JsonDataProviderBenchmark 290 8,720 0

License

The entire project is Apache 2.0 licensed with select sub projects tri-licensed. Original code is apache 2.0 only. New projects are tri-licensed as of 26.0.0.

Apache 2.0 Licensed

  • DataProviders
  • EncryptionProver
  • Majorsilence.WinformUtils
  • RdlAsp.Mvc
  • RdlCmd
  • RdlCri
  • RdlDesign
  • RdlDesktop
  • RdlEngine
  • RdlGtk3
  • RdlGtk3Viewer
  • RdlMapFile
  • RdlReader
  • RdlViewer
  • ReportDesigner

Tri Licensed

  • MIT License — see LICENSE-MIT in sub folders
  • Apache License 2.0 — see LICENSE-APACHE in sub folders
  • BSD 2-Clause License — see LICENSE-BSD in sub folders

tri-licensed projects

  • Majorsilence.Pdf
  • Majorsilence.Pdf.Security
  • Majorsilence.Reporting.UI
  • Majorsilence.Reporting.UI.RdlAvalonia
  • PdfNative
  • RdlCreator
  • RdlNative
  • WebDesigner
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Majorsilence.Reporting.EncryptionProvider:

Package Downloads
Majorsilence.Reporting.RdlViewer

Cross-platform report viewer control for Majorsilence Reporting, built on Majorsilence.Forms. Embed RDL/RDLC report viewing, printing (PDF only -- see MIGRATION-NOTES.md), and export in desktop apps. Targets .NET 8 and .NET 10, any OS Majorsilence.Forms.Avalonia supports. To host it in WPF use Majorsilence.Forms.Wpf's ToWpfElement(); for System.Windows.Forms hosts use Majorsilence.Forms.WinForms's ToWinFormsControl().

Majorsilence.Reporting.ReportDesigner

Cross-platform drag-and-drop RDL report designer control for Majorsilence Reporting, built on Majorsilence.Forms. Targets .NET 8 and .NET 10, any OS Majorsilence.Forms.Avalonia supports.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
27.0.0-alpha.2 30 10/13/2026
27.0.0-alpha.1 56 10/10/2026
26.0.7 252 10/9/2026
26.0.6 139 9/29/2026
26.0.5 100 9/29/2026
26.0.3 464 7/10/2026
26.0.2 158 6/28/2026
26.0.1 144 6/24/2026
5.0.19 148 6/10/2026
5.0.18 531 2/7/2026
5.0.17 243 10/13/2025
5.0.16 184 9/27/2025
5.0.15 232 9/7/2025
5.0.14 235 9/7/2025
5.0.13 247 8/29/2025
5.0.12 289 8/24/2025
5.0.11 149 8/15/2025
5.0.10 261 7/26/2025
5.0.9 286 4/13/2025
5.0.8 262 3/19/2025
Loading failed