Utilizar la compilación ReadyToRun o Ahead-Of-Time (AOT)

This article was translated from English: Does it need improvement?
Translated
View the article in English

.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>
XML

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>
XML

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>
XML

Después de actualizar el .csproj, vuelva a publicar la aplicación, redepliegue y reinicie el sitio de IIS o recicle el Application Pool.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 20,296,129 | Versión: 2026.7 recién publicada
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.