# Użyj ReadyToRun lub kompilacji Ahead-Of-Time (AOT)
[.NET ReadyToRun (R2R)](https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run) to forma kompilacji ahead-of-time (AOT).
Włączenie kompilacji ReadyToRun podczas wdrażania może naruszać ochronę przed manipulacją i powodować wyjątki takie jak poniżej:
```txt
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
```
### Przyczyna
Według dokumentacji Microsoft, SDK wstępnie skompiluje zestawy, które są dystrybuowane z aplikacją. W przypadku aplikacji samodzielnych, ten zbiór zestawów będzie zawierał framework. Ważne jest, aby pamiętać, że binaria C++/CLI nie kwalifikują się do kompilacji ReadyToRun.
### Rozwiązanie
Aby wykluczyć konkretne zestawy z przetwarzania ReadyToRun, użyj listy `<PublishReadyToRunExclude>` w pliku projektu. Na przykład, aby wykluczyć zestaw `IronPdf.dll`:
```xml
<ItemGroup>
<!-- Excludes IronPdf.dll from ReadyToRun compilation -->
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
```
Ten fragment XML należy dodać do pliku projektu (`.csproj`), aby zapobiec wstępnym kompilacjom określonych zestawów z ReadyToRun, unikając tym samym potencjalnych problemów licencyjnych lub ingerencji.
## System.Environment.FailFast przy pierwszym wywołaniu IronPDF
W niektórych wdrożeniach Windows, IronPDF natychmiast przerywa proces przy pierwszym wywołaniu IronPDF bez wyjścia dziennika na poziomie aplikacji. Dziennik zdarzeń Windows rejestruje wpis podobny do:
```txt
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[])
```
To inny błąd niż wyjątek licencjonowania powyżej. Krach występuje podczas statycznej inicjalizacji przed dostępnością normalnego logowania, dlatego nie pojawiają się linie dziennika IronPDF przed zakończeniem procesu.
Wzorzec ten został potwierdzony w aplikacjach ASP.NET Core hostowanych w IIS na Windows Server z włączoną opcją `PublishReadyToRun`. Zostało to odtworzone na:
- IronPDF 2026.4.1
- .NET 10
- IIS (`w3wp.exe`) on Windows Server 2025 Datacenter
- AWS EC2 `win-x64` docelowy cel publikacji
### Rozwiązanie
Zachowaj `<PublishReadyToRun>true</PublishReadyToRun>` dla aplikacji i wykluczaj tylko `IronPdf.dll`:
```xml
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
```
Pełny przykład `.csproj`:
```xml
<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>
```
Po zaktualizowaniu `.csproj`, ponownie opublikuj aplikację, wdroż ją ponownie i zrestartuj witrynę IIS lub odśwież pętlę aplikacji.
Włączenie kompilacji ReadyToRun podczas wdrażania może naruszać ochronę przed manipulacją i powodować wyjątki takie jak poniżej:
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
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
Text
Przyczyna
Według dokumentacji Microsoft, SDK wstępnie skompiluje zestawy, które są dystrybuowane z aplikacją. W przypadku aplikacji samodzielnych, ten zbiór zestawów będzie zawierał framework. Ważne jest, aby pamiętać, że binaria C++/CLI nie kwalifikują się do kompilacji ReadyToRun.
Rozwiązanie
Aby wykluczyć konkretne zestawy z przetwarzania ReadyToRun, użyj listy <PublishReadyToRunExclude> w pliku projektu. Na przykład, aby wykluczyć zestaw IronPdf.dll:
Ten fragment XML należy dodać do pliku projektu (.csproj), aby zapobiec wstępnym kompilacjom określonych zestawów z ReadyToRun, unikając tym samym potencjalnych problemów licencyjnych lub ingerencji.
System.Environment.FailFast przy pierwszym wywołaniu IronPDF
W niektórych wdrożeniach Windows, IronPDF natychmiast przerywa proces przy pierwszym wywołaniu IronPDF bez wyjścia dziennika na poziomie aplikacji. Dziennik zdarzeń Windows rejestruje wpis podobny do:
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[])
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[])
Text
To inny błąd niż wyjątek licencjonowania powyżej. Krach występuje podczas statycznej inicjalizacji przed dostępnością normalnego logowania, dlatego nie pojawiają się linie dziennika IronPDF przed zakończeniem procesu.
Wzorzec ten został potwierdzony w aplikacjach ASP.NET Core hostowanych w IIS na Windows Server z włączoną opcją PublishReadyToRun. Zostało to odtworzone na:
IronPDF 2026.4.1
.NET 10
IIS (w3wp.exe) on Windows Server 2025 Datacenter
AWS EC2 win-x64 docelowy cel publikacji
Rozwiązanie
Zachowaj <PublishReadyToRun>true</PublishReadyToRun> dla aplikacji i wykluczaj tylko IronPdf.dll:
Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.