.NET Framework 4.8 Windows Dienst-Startausnahmen

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

Ein IronPDF .NET Framework 4.8 Windows Service Projekt löst FileNotFoundException aus, wenn ChromePdfRenderer konstruiert wird, oder StackOverflowException, wenn der Lizenzschlüssel gesetzt wird. Der gleiche Code funktioniert korrekt in einem Konsolen- oder WinForms-Host.

Die Fassadeerkennung von MSBuild verhindert, dass sechs von NuGet bereitgestellte Assemblys in das Ausgabeverzeichnis kopiert werden: System.ValueTuple, System.Buffers, System.Threading.Tasks.Extensions, System.Text.Json, System.Text.Encodings.Web und System.Text.Encoding.CodePages. MSBuild geht davon aus, dass die in-box .NET 4.8-Versionen dieser Assemblys den NuGet-Versionen entsprechen, aber die Binding-Redirects in App.config erfordern die NuGet-Versionen. Die fehlenden Dateien verursachen die Ausnahme beim Start.

Lösung

Option 1: Migration zu PackageReference (Empfohlen)

Rechtsklicken Sie in Visual Studio auf packages.config und wählen Sie Pakete.config in PackageReference migrieren. Verifizieren Sie, dass <AutoGenerateBindingRedirects> in der .csproj Datei aktiviert ist, und bauen Sie dann neu auf. Die MSBuild-Integration von PackageReference führt nicht zu dem Fassade-Überspringen-Verhalten.

Option 2: Erzwingen der Kopie von Fassade-DLL mit einem Nachbauziel

Falls das Beibehalten von packages.config erforderlich ist, fügen Sie dieses MSBuild-Ziel zur .csproj Datei hinzu:

<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

Passen Sie die Versionsnummern an, um mit den exakten Versionen übereinzustimmen, die in Ihrem packages Verzeichnis wiederhergestellt wurden.

Das Setzen von <Private>True</Private> (Copy Local) auf Fassadeverweise löst das Problem nicht; Die Fassade-Erkennung von MSBuild blockiert weiterhin den Kopiervorgang.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 20,088,359 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.