Utiliser la compilation ReadyToRun ou Ahead-Of-Time (AOT)
.NET ReadyToRun (R2R) est une forme de compilation en amont (AOT).
Activer la compilation ReadyToRun lors du déploiement peut violer la protection contre la falsification et entraîner des exceptions telles que les suivantes:
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
Raison
Selon la documentation de Microsoft, le SDK précompilera les assemblages qui sont distribués avec l'application. Pour les applications autonomes, cet ensemble d'assemblages inclura le framework. Il est important de noter que les binaires C++/CLI ne sont pas éligibles pour la compilation ReadyToRun.
Solution
Pour exclure des assemblages spécifiques du traitement ReadyToRun, utilisez la liste <PublishReadyToRunExclude> dans votre fichier projet. Par exemple, pour exclure l'assemblage IronPdf.dll :
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
Ce fragment XML doit être ajouté à votre fichier projet (.csproj) pour empêcher les assemblages spécifiés d'être précompilés avec ReadyToRun, évitant ainsi des problèmes potentiels de licence ou de falsification.
System.Environment.FailFast lors du premier appel IronPDF
Dans certains déploiements Windows, IronPDF fait planter le processus immédiatement au premier appel IronPDF sans sortie de journal au niveau de l'application. Le journal des événements Windows enregistre une entrée semblable à :
The application requested process termination through System.Environment.FailFast.
Message: Stack: at System.Environment.FailFast(System.String)
at <Module>..cctor()
at Program.<Main>$(System.String[])
Ceci est une défaillance différente de l'exception de licence ci-dessus. Le plantage survient lors de l'initialisation statique avant que la journalisation normale ne soit disponible, donc aucune ligne de journal IronPDF n'apparaît avant que le processus ne se termine.
Ce modèle a été confirmé dans les applications ASP.NET Core hébergées sur IIS sur Windows Server avec PublishReadyToRun activé. Il a été reproduit sur :
- IronPDF 2026.4.1
- .NET 10
- IIS (
w3wp.exe) on Windows Server 2025 Datacenter - Cible de publication AWS EC2
win-x64
Solution
Conservez <PublishReadyToRun>true</PublishReadyToRun> pour l'application et excluez uniquement IronPdf.dll :
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
Un exemple complet .csproj :
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="IronPdf" Version="2026.4.1" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="IronPdf" Version="2026.4.1" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
Après avoir mis à jour le .csproj, republiez l'application, redéployez et redémarrez le site IIS ou recyclez le Pool d'applications.

