Benutzen Sie ReadyToRun oder AOT-Kompilierung

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

.NET ReadyToRun (R2R) ist eine Form der Ahead-Of-Time (AOT) Compilation.

Die Aktivierung der ReadyToRun-Kompilierung während der Bereitstellung könnte den Manipulationsschutz verletzen und zu Ausnahmen wie den folgenden führen:

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

Grund

Laut Microsoft-Dokumentation wird das SDK die mit der Anwendung verteilten Assemblys vorkompilieren. Bei selbstenthaltenen Anwendungen wird dieser Satz von Assemblys das Framework umfassen. Es ist wichtig zu beachten, dass C++/CLI-Binärdateien nicht für die ReadyToRun-Kompilierung geeignet sind.

Lösung

Um spezifische Assemblies von der ReadyToRun-Verarbeitung auszuschließen, verwenden Sie die <PublishReadyToRunExclude>-Liste in Ihrer Projektdatei. Zum Beispiel, um die IronPdf.dll-Assembly auszuschließen:

<ItemGroup>

    <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>

    <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
XML

Dieser XML-Ausschnitt sollte Ihrer Projektdatei (.csproj) hinzugefügt werden, um zu verhindern, dass die angegebenen Assemblies mit ReadyToRun vorkompiliert werden, wodurch potenzielle Lizenz- oder Manipulationsprobleme vermieden werden.

System.Environment.FailFast bei erstem IronPDF-Aufruf

Bei einigen Windows-Bereitstellungen stürzt IronPDF den Prozess unmittelbar bei dem ersten IronPDF-Aufruf ab, ohne dass Anwendungsprotokollausgaben vorhanden sind. Das Windows-Ereignisprotokoll verzeichnet einen Eintrag ähnlich zu:

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[])

Dies ist ein anderer Fehler als die oben genannte Lizenzierungsausnahme. Der Absturz tritt während der statischen Initialisierung auf, bevor normales Logging verfügbar ist, sodass keine IronPDF-Protokollzeilen erscheinen, bevor der Prozess terminiert.

Dieses Muster wurde in ASP.NET Core-Anwendungen bestätigt, die in IIS auf Windows Server mit PublishReadyToRun aktiviert gehostet werden. Es wurde reproduziert auf:

  • IronPDF 2026.4.1
  • .NET 10
  • IIS (w3wp.exe) on Windows Server 2025 Datacenter
  • AWS EC2 win-x64 Veröffentlichungsziel

Lösung

Behalten Sie <PublishReadyToRun>true</PublishReadyToRun> für die Anwendung bei und schließen Sie nur IronPdf.dll aus:

<ItemGroup>
    <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
<ItemGroup>
    <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
XML

Ein vollständiges .csproj-Beispiel:

<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

Nach der Aktualisierung der .csproj das Programm neu veröffentlichen, erneut bereitstellen und die IIS-Site neu starten oder den Anwendungspool recyceln.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 20,296,129 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.