Use ReadyToRun or Ahead-Of-Time (AOT) Compilation

.NET ReadyToRun (R2R) is a form of ahead-of-time (AOT) compilation.

Enabling ReadyToRun compilation during deployment might violate tampering protection and result in exceptions such as the following:

Exception: Unhandled exception. IronSoftware.Exceptions.LicensingException: IronPdf, Version=2024.2.0.2, Culture=neutral, PublicKeyToken=94e1c31412563c75 assembly is not authentic. Please try to reinstall the nuget package
   at IronPdf.PdfDocument.uswvws(Boolean vhfwdf)
   at IronPdf.PdfDocument.get_BinaryData()
   at IronPdf.PdfDocument.SaveAs(String FileName, Boolean SaveAsRevision)
   at Program.<Main>(String[] args) in C:\csharppro\aottest\aottest\Program.cs:line 5

Reason

According to Microsoft documentation, the SDK will precompile the assemblies that are distributed with the application. For self-contained applications, this set of assemblies will include the framework. It's important to note that C++/CLI binaries are not eligible for ReadyToRun compilation.

Solution

To exclude specific assemblies from ReadyToRun processing, use the <PublishReadyToRunExclude> list in your project file. For example, to exclude the IronPdf.dll assembly:

<ItemGroup>
    <!-- Excludes IronPdf.dll from ReadyToRun compilation -->
    <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
    <!-- Excludes IronPdf.dll from ReadyToRun compilation -->
    <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
XML

This XML snippet should be added to your project file (.csproj) to prevent the specified assemblies from being precompiled with ReadyToRun, thus avoiding potential licensing or tampering issues.

Chaknith Bin
Software Engineer
Chaknith works on IronXL and IronBarcode. He has deep expertise in C# and .NET, helping improve the software and support customers. His insights from user interactions contribute to better products, documentation, and overall experience.