Exceções de Inicialização de Serviço Windows do .NET Framework 4.8

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

Um projeto de Serviço Windows IronPDF .NET Framework 4.8 lança FileNotFoundException ao construir ChromePdfRenderer, ou StackOverflowException ao definir a chave de licença. O mesmo código funciona corretamente em um host de console ou WinForms.

A lógica de detecção de fachada do MSBuild impede que seis assemblies fornecidos pelo NuGet sejam copiados para o diretório de saída: System.ValueTuple, System.Buffers, System.Threading.Tasks.Extensions, System.Text.Json, System.Text.Encodings.Web e System.Text.Encoding.CodePages. O MSBuild assume que as versões embutidas do .NET 4.8 desses assemblies são equivalentes às versões do NuGet, mas os redirecionamentos de vinculação em App.config requerem as versões do NuGet. Os arquivos ausentes causam a exceção na inicialização.

Solução

Opção 1: Migrar para PackageReference (Recomendado)

Clique com o botão direito em packages.config no Visual Studio e selecione Migrar packages.config para PackageReference. Verifique se <AutoGenerateBindingRedirects> está ativado no arquivo .csproj, depois reconstrua. A integração do MSBuild do PackageReference não aciona o comportamento de pular fachadas.

Opção 2: Forçar cópia de DLL de fachada com um alvo AfterBuild

Se for necessário manter packages.config, adicione este alvo MSBuild ao arquivo .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>
<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

Ajuste os números das versões para corresponder às versões exatas restauradas no seu diretório packages.

Definir <Private>True</Private> (Cópia Local) em referências de fachada não resolve o problema; A detecção de fachadas do MSBuild ainda bloqueia a etapa de cópia.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 20,088,359 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.