Resolving Compile Time Error with Telerik.Documents.Fixed and Telerik.Reporting after Upgrading to Q4 2024
Environment
| Version | Product | Author |
|---|---|---|
| 18.3.24.1112 | Reporting | Desislava Yordanova |
| 2024.4.1106 | RadPdfProcessing (.NET Standard) |
Description
If you have the Telerik.Reporting NuGet package (18.3.24.1112) installed simultaneously with the Telerik.Documents.Fixed NuGet package, a compile-time error occurs:
The type 'Size' exists in both 'Telerik.Documents.Core, Version=2024.4.1106.20, Culture=neutral, PublicKeyToken=5803cfa389c90ce7' and 'Telerik.Reporting, Version=18.3.24.1112, Culture=neutral, PublicKeyToken=a9d7983dfcc261be'
This undesired behavior is not reproducible with the previous version of Telerik Reporting. It is caused by the fact that
Telerik.Documents.Primitives.Sizeis contained in both assemblies and packages with the same namespace.
Solution
To resolve the compile-time error caused by the conflicting Size type in both assemblies, use the C# extern alias feature. Follow these steps to implement the solution:
-
Select the
Telerik.Documents.FixedNuGet package and set its Alias toDPLHelper(or a name of your choice):
-
Select the
Telerik.ReportingNuGet package and set its Alias toReportingHelper(or a name of your choice):
-
Use Extern Alias in Your Code: At the top of your source file, add the extern alias directive for each alias you assigned. This differentiates the namespaces and allows you to use types from both assemblies without conflict.
-
Adjust Your Code to Use the Aliased Namespaces:
extern alias DPLHelper;
extern alias ReportingHelper;
using DPLHelper::Telerik.Windows.Documents.Fixed.Model.Editing;
using DPLHelper::Telerik.Windows.Documents.Fixed.Model;
namespace YourNamespace
{
internal class Program
{
static void Main(string[] args)
{
RadFixedDocument fixedDocument = new RadFixedDocument();
RadFixedPage fixedPage = fixedDocument.Pages.AddPage();
fixedPage.Size = new Telerik.Documents.Primitives.Size(210,297);
FixedContentEditor fixedEditor = new FixedContentEditor(fixedPage);
}
}
}
This approach allows you to explicitly specify which Size class to use, thereby resolving the compile-time error and allowing your project to build successfully.