IRONSOFTWAREHOME

.NET Framework 4.8 Windows Service 啟動例外

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

一個 IronPDF .NET Framework 4.8 Windows Service 專案在建構 FileNotFoundException 時拋出 ChromePdfRenderer,或在設定授權金鑰時拋出 StackOverflowException。 相同的程式碼在控制台或 WinForms 主機中正常工作。

MSBuild 的facade檢測邏輯防止六個NuGet提供的程式集複製到輸出目錄:System.Text.Encodings.WebSystem.Text.Encoding.CodePages。 MSBuild 認為這些程式集的內建 .NET 4.8 版本等同於 NuGet 的版本,但 App.config 中的綁定重定向需要使用 NuGet 的版本。 缺少的檔案導致啟動時出現例外。

解決方案

選項 1:遷移到 PackageReference(推薦)

在 Visual Studio 中右鍵點擊 packages.config,然後選擇將 packages.config 遷移到 PackageReference。 確認 <AutoGenerateBindingRedirects>.csproj 文件中已啟用,然後重新構建。 PackageReference 的 MSBuild 整合不會觸發 facade 跳過行為。

選項 2:使用 AfterBuild 目標強制複製 facade DLL

如果需要保留 packages.config,請將此 MSBuild 目標新增到 .csproj 文件中:

<Target Name="CopyFacadeAssemblies" AfterTargets="Build">
    <ItemGroup>
        <FacadeAssemblies Include="..\packages\System.Buffers.4.5.1\lib\netstandard2.0\System.Buffers.dll" />
        <FacadeAssemblies Include="..\packages\System.Text.Encodings.Web.6.0.1\lib\net461\System.Text.Encodings.Web.dll" />
        <FacadeAssemblies Include="..\packages\System.Text.Json.6.0.11\lib\net461\System.Text.Json.dll" />
        <FacadeAssemblies Include="..\packages\System.Text.Encoding.CodePages.5.0.0\lib\net461\System.Text.Encoding.CodePages.dll" />
        <FacadeAssemblies Include="..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll" />
        <FacadeAssemblies Include="..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll" />
    </ItemGroup>
    <Copy SourceFiles="@(FacadeAssemblies)" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="true" />
</Target>
XML

調整版本號碼以匹配在您的 packages 目錄中還原的確切版本。

在 facade 參考上設定 <Private>True</Private>(本地複製)無法解決問題; MSBuild 的facade檢測仍然阻止複製步驟。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

準備開始了嗎?

Nuget Downloads 20,878,335版本:2026.9剛剛發布

立即獲取您的免費30天試用密鑰
不需要信用卡或建立賬戶
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載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天試用金鑰
無需信用卡或帳戶建立