Resolving Compile Time Error with Telerik.Documents.Fixed and Telerik.Reporting after Upgrading to Q4 2024
Environment
Version | Product | Author |
---|---|---|
18.3.24.1112 | Telerik.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 due to the fact that Telerik.Documents.Primitives.Size is contained in both assemblies/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.Fixed NuGet package and set its Alias to DPLHelper (or whatever you want):
-
Select the Telerik.Reporting NuGet package and set its Alias to ReportingHelper (or whatever you want):
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, allowing 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.