Exceptions de démarrage du service Windows .NET Framework 4.8

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

Un projet IronPDF .NET Framework 4.8 Windows Service génère FileNotFoundException lors de la construction de ChromePdfRenderer, ou StackOverflowException lors de la configuration de la clé de licence. Le même code fonctionne correctement dans une console ou un hôte WinForms.

La logique de détection de façade de MSBuild empêche six assemblages fournis par NuGet d'être copiés dans le répertoire de sortie : System.ValueTuple, System.Buffers, System.Threading.Tasks.Extensions, System.Text.Json, System.Text.Encodings.Web, et System.Text.Encoding.CodePages. MSBuild suppose que les versions incluses de ces assemblages de .NET 4.8 sont équivalentes aux versions NuGet, mais les redirections de liaison dans App.config requièrent les versions NuGet. Les fichiers manquants causent l'exception au démarrage.

Solution

Faites un clic droit sur packages.config dans Visual Studio et sélectionnez Migrer les packages.config vers PackageReference. Vérifiez que <AutoGenerateBindingRedirects> est activé dans le fichier .csproj, puis reconstruisez. L'intégration MSBuild de PackageReference ne déclenche pas le comportement de saut de façade.

Option 2 : Forcer la copie de la DLL de la façade avec une cible AfterBuild

Si la conservation de packages.config est nécessaire, ajoutez cette cible MSBuild au fichier .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

Ajustez les numéros de version pour qu'ils correspondent exactement aux versions restaurées dans votre répertoire packages.

Configurer <Private>True</Private> (Copy Local) sur les références de façade ne résout pas le problème ; La détection de façade de MSBuild bloque toujours l'étape de copie.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer ?
Nuget Téléchargements 20,088,359 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronPdf
exécuter un échantillon Regardez votre code HTML se transformer en PDF.