Excepciones de Inicio del Servicio de Windows en .NET Framework 4.8

Curtis Chau
Curtis Chau
Updated: 10 de junio de 2026

Un proyecto de servicio de Windows de IronPDF .NET Framework 4.8 arroja FileNotFoundException al construir ChromePdfRenderer, o StackOverflowException al configurar la clave de licencia. El mismo código funciona correctamente en un host de consola o WinForms.

La lógica de detección de fachada de MSBuild impide que se copien seis ensamblados suministrados por NuGet al directorio de salida: System.ValueTuple, System.Buffers, System.Threading.Tasks.Extensions, System.Text.Json, System.Text.Encodings.Web, y System.Text.Encoding.CodePages. MSBuild asume que las versiones en caja de .NET 4.8 de estos ensamblados son equivalentes a las versiones NuGet, pero las redirecciones de enlace en App.config requieren las versiones NuGet. Los archivos faltantes causan la excepción al inicio.

Solución

Haga clic derecho en packages.config en Visual Studio y seleccione Migrar packages.config a PackageReference. Verifique que <AutoGenerateBindingRedirects> esté habilitado en el archivo .csproj, luego reconstruya. La integración de MSBuild de PackageReference no desencadena el comportamiento de omitir fachada.

Opción 2: Forzar la copia de DLL de fachada con un objetivo AfterBuild

Si es necesario retener packages.config, agregue este objetivo de MSBuild al archivo .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

Ajuste los números de versión para que coincidan con las versiones exactas restauradas en su directorio packages.

Configurar <Private>True</Private> (Copy Local) en referencias de fachada no resuelve el problema; La detección de fachada de MSBuild aún bloquea el paso de copia.

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.

Leer más

¿Listo para empezar?

Nuget Downloads 21,739,885Versión:2026.10recién publicada