IRONSOFTWAREHOME

使用 ReadyToRun 或 Ahead-Of-Time (AOT) 编译

Curtis Chau
Curtis Chau
Updated: 2026年6月29日

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

原因

根据微软文档,SDK 会预编译与应用程序一起分发的程序集。 对于自包含应用程序,这组程序集将包括框架。 重要的是要注意,C++/CLI 二进制文件不适合 ReadyToRun 编译。

解决方案

要从ReadyToRun处理中排除特定程序集,请在您的项目文件中使用IronPdf.dll程序集:

<ItemGroup>
    <!-- Excludes IronPdf.dll from ReadyToRun compilation -->
    <PublishReadyToRunExclude Include="IronPdf.dll" />
</ItemGroup>
XML

此XML片段应添加到您的项目文件(.csproj)中,以防止指定的程序集被ReadyToRun预编译,从而避免潜在的许可或篡改问题。

首次IronPDF调用时的System.Environment.FailFast

在某些Windows部署中,IronPDF在第一次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[])
Text

这与上面的授权异常不同。 崩溃发生在静态初始化期间,正常日志记录不可用,因此在进程终止之前不会出现IronPDF日志行。

该模式已在启用PublishReadyToRun的Windows Server上托管的ASP.NET Core应用程序中得到确认。 它已在以下设备上重现:

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

更新.csproj后,重新发布应用程序,重新部署,并重启IIS站点或回收应用程序池。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

准备开始了吗?

Nuget Downloads 20,756,830版本:2026.7刚刚发布

立即获取您的免费30 天试用密钥
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.7

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.7

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户