.NET Framework 4.8 Windows Servisi Başlangıç İstisnaları

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

Bir IronPDF .NET Framework 4.8 Windows Hizmet projesi, FileNotFoundException oluşturulurken veya lisans anahtarı ayarlanırken ChromePdfRenderer ya da StackOverflowException hatası verir. Aynı kod bir konsol veya WinForms sunucusunda doğru çalışır.

MSBuild'in facade-tespit mantığı, altı NuGet tarafından sağlanan derlemelerin çıktı dizinine kopyalanmasını engeller: System.ValueTuple, System.Buffers, System.Threading.Tasks.Extensions, System.Text.Json, System.Text.Encodings.Web ve System.Text.Encoding.CodePages. MSBuild, bu derlemelerin kutudan çıkan .NET 4.8 sürümlerinin NuGet sürümleriyle eşdeğer olduğunu varsayar, ancak App.config içindeki bağlama yönlendirmeleri NuGet sürümlerine ihtiyaç duyar. Eksik dosyalar başlangıçta istisnaya neden olur.

Çözüm

Seçenek 1: PackageReference'a Geçin (Önerilen)

Visual Studio'da packages.config sağ tıklayın ve packages.config'i PackageReference'e Taşı seçeneğini seçin. <AutoGenerateBindingRedirects> dosyasında etkin olduğundan emin olun, ardından yeniden derleyin. PackageReference'ın MSBuild entegrasyonu, facades-atlama davranışını tetiklemez.

Seçenek 2: AfterBuild hedefi ile facade DLL kopyasını zorla

packages.config korunması gerekiyorsa, bu MSBuild hedefini .csproj dosyasına ekleyin:

<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>
<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 dizininde geri yüklenen tam sürümlerle eşleşmesi için sürüm numaralarını ayarlayın.

Facade referanslarında <Private>True</Private> (Yerel Kopyala) ayarlamak sorunu çözmez; MSBuild'in facade algılaması hala kopyalama adımını engeller.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 20,088,359 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.