Available .NET Support for Operating Systems and Docker Containers
Starting with version R1 2019 (13.0.19.116), Telerik Reporting provides a set of assemblies and NuGet packages that are designed for .NET projects and enable you to use Telerik reports in .NET applications on Windows, Linux, and macOS platforms.
The NuGet packages are available on NuGet.org. Additionally, the assemblies are available in the \Bin\netstandard2.0\, \Bin\net8.0\, and \Bin\net8.0-windows\ folders located in the Telerik Reporting installation directory.
If you are using a release older than 2026 Q3, the Telerik Reporting NuGet packages must be installed via the Telerik NuGet feed.
The assemblies target .NET Standard 2.0 and the desktop viewers target .NET 8 or above, which ensures compatibility with a greater variety of frameworks and applications. Also, the NuGet packages resolve the external dependencies to provide better dependency management and code portability.
Requirements
.NET 8 or above.
When using Telerik NuGet packages, the required dependencies are resolved automatically. If you reference the assemblies directly, add the following packages manually:
| Package Name | Version |
|---|---|
Microsoft.Extensions.Configuration | 9.0.11 |
Microsoft.Extensions.Configuration.Binder | 9.0.11 |
Microsoft.Extensions.Configuration.Json | 9.0.11 |
Microsoft.Data.SqlClient | 6.1.4 |
System.Configuration.ConfigurationManager | 9.0.11 |
System.Data.SqlClient | 4.8.6 |
System.Formats.Asn1 | 9.0.11 |
System.IO.Packaging | 6.0.1 |
System.Reflection.Emit | 4.3.0 |
System.Reflection.Emit.Lightweight | 4.3.0 |
System.Runtime.Loader | 4.3.0 |
System.Security.Cryptography.Pkcs | 9.0.11 |
System.Security.Permissions | 6.0.1 |
System.Text.Encoding.CodePages | 6.0.0 |
System.Text.Json | 9.0.11 |
System.Text.RegularExpressions | 4.3.1 |
System.Threading.AccessControl | 8.0.0 |
sqlite-net-pcl | 1.11.272-beta |
Features and Limitations
On Windows, the reporting engine still relies on the GDI+ library because it provides the fastest and most convenient way to process text, which is essential to the product.
- For Windows, .NET runtime natively resolves the GDI+ calls.
- For Linux and macOS, you need to install the set of libraries listed below.
Most of the processing and rendering features that work on Windows and use .NET Framework 4 or later are also supported in .NET projects with the new .NET Standard assemblies.
The report item designers are not .NET Standard-compatible. No design-time support in Visual Studio is available, and type reports are not supported. Import and convert VS Report Designer reports to .trdx or .trdp definitions with the Standalone Report Designer.
Also, you can use these classes as runtime-created report instances. You can use report definitions created in Visual Studio as report instances in .NET applications, but their code must not include any calls to CodeDOM-specific classes like ResourceManager.
Telerik Reporting supports the following functionalities:
-
All rendering extensions except MHTML (HTML archive), XPS (XML Paper Specification), and XLS (Microsoft Excel 97 - 2003).
-
HTML, PDF, and OpenXML-based renderings are supported on Linux and macOS. Due to graphics library incompatibilities, in some cases, Graph-based items in the OpenXML renderings are incorrectly displayed.
-
All report items except the obsolete Chart item are supported.
-
The supported report definition types are
TRDX,TRDP, and report classes created in Visual Studio without the VS designer-specific code. -
Telerik Reporting supports the following Data Source components:
-
The JSON-based reporting configuration is also supported. For CLI projects, the JSON configuration has precedence over the current XML-based reporting configuration.
Deploying on Linux
Starting with R3 2023 (17.2.23.1010), Telerik Reporting introduced a cross-platform SkiaSharp-based graphics engine. The active engine is controlled by the engineName element of the processing Element, which corresponds with the members of the Telerik.Drawing.Contract.GraphicsEngine enumeration.
For .NET 8+ applications on Linux, use the SkiaSharp graphics engine by referencing the Telerik.Drawing.Skia NuGet package or assembly in your project hosting the Reporting service or engine.
The following libraries should also be installed as required by SkiaSharp. The snippet is relevant for Ubuntu or Debian and may differ for other Linux distributions:
sudo apt-get update
sudo apt-get install -y libfreetype6
sudo apt-get install -y libfontconfig1
Since the SkiaSharp library is not a perfect replacement for the Windows graphics library, the rendered reports may differ in terms of text positioning, word-wrapping, and alignment. These problems mostly affect the Image rendering extension and, therefore, avoid the Image rendering extension on Linux.
The following JSON configuration snippet hides the Image rendering extension from the list of available rendering extensions:
"telerikReporting": {
"extensions": [
{
"name": "IMAGE",
"visible": false
}
]
}
On the Linux machine, you also need to install the fonts you use in the reports. Otherwise, the font substitution algorithm will replace them with a system font. When rendering a PDF document, the fonts get resolved only if they are listed in the <privateFonts> configuration element.
Deploying on macOS
The SkiaSharp graphics engine (introduced in R3 2023 (17.2.23.1010)) is required for macOS. The active engine is controlled by the engineName element of the processing Element. For the available engine options, see the Telerik.Drawing.Contract.GraphicsEngine enumeration.
To use .NET on macOS:
-
Install .NET for macOS.
-
Create your .NET application or copy an existing one from a Windows machine.
If you are using a release before 2026 Q3, it will be necessary to add a
nuget.configfile with a path to your NuGet repository and set up the Telerik NuGet Feed. -
Install the
Telerik.Drawing.SkiaNuGet package. -
Add a section in the
appsettings.jsonfile for any font fallback. -
Run the following command to build the project and run the application. If you run the project in debug mode, Visual Studio Code will ask you to add the debug configuration to the
launch.jsonfile.zshdotnet build
Using Container Platforms
You can use Telerik Reporting in a Docker image if it meets the graphics engine requirements.
To use Telerik Reporting in a Windows container, target a Windows-based image with GDI support. The same approach is recommended in the Microsoft Windows container base image documentation.
Some Docker containers are created with invariant culture, which means locale-dependent values such as currency symbols may appear differently than expected. Add the following environment variables to the Dockerfile to configure a specific culture ('en-US' in this example):
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
LC_ALLsets all locale categories;LANGsets the default language.
Linux Docker Container
Linux containers require the SkiaSharp graphics engine. Reference the Telerik.Drawing.Skia NuGet package or assembly in your project hosting the Reporting service or engine.
The following libraries should also be installed in the Docker image as required by SkiaSharp. The snippet is relevant for Ubuntu or Debian and may differ for other Linux distributions:
FROM microsoft/dotnet:7.0-runtime AS base
RUN apt-get update && \
apt-get install -y libfreetype6 libfontconfig1
Install the fonts used in your reports on the Docker image so reports render consistently with the Windows output. See Installing Fonts in a Docker Environment for details.
Windows Docker Container with System.Drawing
Ensure the base image supports GDI+. For example, use the windowsservercore from the Container Base Images. Select Add > Docker Support... from the project's context menu:

Select the base image from the configuration dialog:

The autogenerated Docker file contains the following:
FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 AS base
WORKDIR /app
EXPOSE 8080
FROM mcr.microsoft.com/dotnet/sdk:windowsservercore-ltsc2022 AS build
# ...
Sample Projects
Telerik Reporting ships with ready-made .NET examples demonstrating how to show the sample reports in an ASP.NET Core, WinForms, and WPF application. The ASP.NET Core demo also shows how to inject an appsettings.json configuration file to the controller and how to initialize a WebHostBuilder so it runs under Windows and Linux.
Sample projects are available in the subfolders with the corresponding framework names in the \Examples\CSharp subfolder of the Telerik Reporting installation directory. For example, the .NET 8 ASP.NET Core demo is located by default at C:\Program Files (x86)\Progress\Telerik Reporting 2026 Q3\Examples\CSharp\.NET 8\Html5IntegrationDemo.
Docker Samples
Starting with 2024 Q2 (18.1.24.514), Telerik Reporting distributes sample Docker files for deploying the Telerik Reporting Web Examples for .NET with the SkiaSharp graphics engine on Linux containers. Build the Docker image from the terminal using these files; they are not intended for use with Visual Studio because the Visual Studio projects reference TRDP reports in a folder that the Docker file cannot reach when run from Visual Studio.
The Docker files may be found in the folder of the corresponding project. For example, the Dockerfile for the .NET 8 Telerik Reporting REST Service project with enabled CORS is located by default at C:\Program Files (x86)\Progress\Telerik Reporting 2026 Q3\Examples\CSharp\.NET 8\ReportingRestServiceCorsDemo. The file begins with instructions for building the image and running the container. Replace the placeholders in curly brackets with your own values: TelerikNuGetApiKey, Telerik Reporting Installation Folder, and Connection String to AdventureWorks Database Accessible From the Docker Container. The deployed Reporting REST Service project with enabled CORS runs on localhost:4040:
# command to BUILD docker IMAGE from the Windows Terminal:
# docker image build -f "{Replace With Installation Folder}\Examples\CSharp\.NET 8\ReportingRestServiceCorsDemo\Dockerfile" -t net8reportingrestservicecorsdemo --build-arg TelerikNugetServerApiKey={Replace With Your TelerikNuGetApiKey} "{Replace With Installation Folder}"
# command to RUN docker CONTAINER from the Windows Terminal:
# docker run -e ConnectionStrings__Telerik.Reporting.Examples.CSharp.Properties.Settings.TelerikConnectionString__connectionString="{Replace With Connection String to AdventureWorks Database Accessible From the Docker Container}" -it -p 4040:8080 net8reportingrestservicecorsdemo
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 8080
RUN apt-get update && \
apt-get install -y libfreetype6 libfontconfig1
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["Report Designer/Examples", "Reports"]
COPY ["Examples/CSharp/.NET 8/ReportingRestServiceCorsDemo", ".NET 8/ReportingRestServiceCorsDemo/"]
COPY ["Examples/CSharp/Business Objects", "Business Objects/"]
COPY ["Examples/CSharp/nuget.config", ""]
ARG TelerikNugetServerApiKey
ENV TelerikNugetServer_API_KEY $TelerikNugetServerApiKey
RUN dotnet restore "/src/.NET 8/ReportingRestServiceCorsDemo/CSharp.Net8.ReportingRestServiceCorsDemo.csproj"
WORKDIR "/src/.NET 8/ReportingRestServiceCorsDemo"
RUN dotnet build "./CSharp.Net8.ReportingRestServiceCorsDemo.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./CSharp.Net8.ReportingRestServiceCorsDemo.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app/Examples/CSharp/NET8/ReportingRestServiceCorsDemo
COPY /app/publish .
COPY ["/src/Reports", "/app/Report Designer/Examples"]
ENTRYPOINT ["dotnet", "CSharp.Net8.ReportingRestServiceCorsDemo.dll"]