Utilizar la compilación ReadyToRun o Ahead-Of-Time (AOT)
.NET ReadyToRun (R2R) es una forma de compilación anticipada (AOT).
Habilitar la compilación ReadyToRun durante la implementación podría violar la protección contra manipulaciones y resultar en excepciones como las siguientes:
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
Motivo
Según la documentación de Microsoft, el SDK precompilará los ensamblados que se distribuyen con la aplicación. Para aplicaciones autónomas, este conjunto de ensamblados incluirá el marco de trabajo. Es importante tener en cuenta que los binarios C++/CLI no son elegibles para la compilación ReadyToRun.
Solución
Para excluir ensamblajes específicos del procesamiento ReadyToRun, use la lista <PublishReadyToRunExclude> en su archivo de proyecto. Por ejemplo, para excluir el ensamblaje IronPdf.dll:
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
Este fragmento de XML debe añadirse a su archivo de proyecto (.csproj) para evitar que los ensamblajes especificados se precompilen con ReadyToRun, evitando así posibles problemas de licencias o manipulación.
System.Environment.FailFast en la primera llamada de IronPDF
En algunos despliegues de Windows, IronPDF falla el proceso inmediatamente en la primera llamada de IronPDF sin salida de registro a nivel de aplicación. El Registro de eventos de Windows registra una entrada similar a:
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[])
Este es un fallo diferente al de la excepción de licencia antes mencionada. El fallo ocurre durante la inicialización estática antes de que el registro normal esté disponible, por lo que no aparecen líneas de registro de IronPDF antes de que el proceso termine.
Este patrón ha sido confirmado en aplicaciones ASP.NET Core alojadas en IIS en Windows Server con PublishReadyToRun habilitado. Ha sido reproducido en:
- IronPDF 2026.4.1
- .NET 10
- IIS (
w3wp.exe) on Windows Server 2025 Datacenter - Objetivo de publicación AWS EC2
win-x64
Solución
Mantenga <PublishReadyToRun>true</PublishReadyToRun> para la aplicación y excluya solo IronPdf.dll:
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
Un ejemplo completo de .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>
Después de actualizar el .csproj, vuelva a publicar la aplicación, redepliegue y reinicie el sitio de IIS o recicle el Application Pool.

