ReadyToRun、または AOT (Ahead-Of-Time) コンパイルを使用する

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

.NET ReadyToRun (R2R) は事前コンパイル (AOT) の一形態です。

展開中にReadyToRunコンパイルを有効にすると、改ざん保護を侵害し、以下の例外が発生する可能性があります:

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

理由

Microsoftのドキュメントによると、SDKはアプリケーションとともに配布されるアセンブリを事前コンパイルします。 自己完結型のアプリケーションの場合、このアセンブリセットにはフレームワークが含まれます。 C++/CLIのバイナリはReadyToRunコンパイルの対象外であることに注意が必要です。

解決策

特定のアセンブリをReadyToRun処理から除外するには、プロジェクトファイル内のIronPdf.dllアセンブリを除外するには次のようにします。

<ItemGroup>

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

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

指定されたアセンブリがReadyToRunで事前コンパイルされるのを防ぐために、このXMLスニペットをプロジェクトファイル(.csproj)に追加します。これにより、ライセンスや改ざんの問題を避けることができます。

最初のIronPDF呼び出しでSystem.Environment.FailFast

いくつかのWindowsデプロイメントでは、最初のIronPDF呼び出しでアプリケーションレベルのログ出力なしにプロセスが即座にクラッシュします。 Windowsイベントログには次のようなエントリが記録されます:

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

これは、上記のライセンス例外とは異なる障害です。 静的初期化中にクラッシュが発生し、通常のログが利用可能になる前にプロセスが終了するため、IronPDFのログラインがありません。

このパターンは、Windows Server上のIISでホストされたASP.NET CoreアプリケーションでPublishReadyToRunが有効になっている場合に確認されています。 次で再現されています:

− IronPDF 2026.4.1 − .NET 10

  • Windows Server 2025 Datacenter上のIIS (w3wp.exe)
  • AWS EC2 win-x64 パブリッシュターゲット

解決策

アプリケーションのIronPdf.dllのみを除外します。

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

完全な.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

.csprojを更新した後、アプリケーションを再公開し、再デプロイし、IISサイトを再起動するか、アプリケーションプールを再循環してください。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 20,296,129 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPdf
サンプルを実行するHTML が PDF に変換されるのを確認します。