.NET Framework 4.8 Windows Servisi Başlangıç İstisnaları
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>
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.

