Use ReadyToRun or Ahead-Of-Time (AOT) Compilation

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

原因

根據微軟文檔,SDK 將預先編譯分配到應用程式中的程序集。 對於獨立的應用程式,這些程序集將包括框架。 重要的是要注意,C++/CLI 二進制文件不符合 ReadyToRun 編譯的條件。

解決方案

要從 ReadyToRun 處理中排除特定的程序集,請在項目文件中使用 <PublishReadyToRunExclude> 列表。例如,要排除 IronPdf.dll 程序集:

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

此 XML 片段應該添加到您的項目文件 (.csproj) 中,以防止指定的程序集在 ReadyToRun 中被預編譯,從而避免潛在的授權或篡改問題。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 16,154,058 | 版本: 2025.11 剛剛發布