Użyj ReadyToRun lub kompilacji Ahead-Of-Time (AOT)
.NET ReadyToRun (R2R) 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:
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:
<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:
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-x64docelowy cel publikacji
Rozwiązanie
Zachowaj <PublishReadyToRun>true</PublishReadyToRun> dla aplikacji i wykluczaj tylko IronPdf.dll:
<ItemGroup>
<PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
Pełny przykład .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>
Po zaktualizowaniu .csproj, ponownie opublikuj aplikację, wdroż ją ponownie i zrestartuj witrynę IIS lub odśwież pętlę aplikacji.

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.