IronPrint on macOS with .NET 8 (Apple Silicon)

Curtis Chau
Curtis Chau
Updated: 29. Juni 2026

Das Ausführen von IronPrint in einer .NET 8 Konsolen-App auf Apple Silicon macOS kann zur Build-Zeit mit fehlenden nativen Bibliotheken fehlschlagen, und Printer.GetPrinterNamesAsync() gibt zur Laufzeit aus.

System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
Text

macOS stellt libgdiplus nicht zur Verfügung, die GDI+ Implementierung, von der IronPrint und System.Drawing abhängen, und ein einfaches net8.0 Ziel aktiviert nie die macOS-spezifischen Plattform-APIs. Beide Lücken müssen geschlossen werden.

Lösung

1. Installieren Sie die native GDI+-Bibliothek

Installieren Sie libgdiplus über Homebrew, sodass die GDI+ Unterstützung, die Windows standardmäßig bietet, auf macOS verfügbar ist:

brew install mono-libgdiplus
SHELL

Ohne diese Bibliothek hat System.Drawing kein natives Backend, um darauf zuzugreifen.

2. Zielen Sie auf das macOS-Framework

Richten Sie Ihr .csproj auf das macOS-spezifische Ziel-Framework anstelle eines einfachen net8.0 aus:

<TargetFramework>net8.0-macos</TargetFramework>
XML

Dies teilt .NET mit, die macOS-Plattform-APIs anstelle der plattformübergreifenden stubs zu verwenden.

Warnung: net8.0-macos ist nicht Teil der Standard-Konsolen-App-Vorlagen. Installieren Sie die macOS-Arbeitslast oder starten Sie von einer macOS-App-Vorlage, um vorkonfigurierte Unterstützung zu erhalten.

Eine vollständige Projektdatei sieht so aus:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0-macos</TargetFramework>
    <Nullable>enable</Nullable>
    <UseSystemDrawing>true</UseSystemDrawing>
  </PropertyGroup>
</Project>
XML

3. Verwenden Sie eine Kompatible Druck-API

Rufen Sie auf macOS ShowPrintDialogAsync() für Druckoperationen auf, anstatt sich auf Windows-only-Druckpfade zu verlassen.

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 Handbücher.

Weiterlesen

Bereit anzufangen?

Nuget Downloads 49,171Version:2026.11gerade veröffentlicht