# IronPrint on macOS with .NET 8 (Apple Silicon)
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.
```txt
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
```
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:
```bash
brew install mono-libgdiplus
```
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:
```xml
<TargetFramework>net8.0-macos</TargetFramework>
```
Dies teilt .NET mit, die macOS-Plattform-APIs anstelle der plattformübergreifenden stubs zu verwenden.
[[w:(`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:
```xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0-macos</TargetFramework>
<Nullable>enable</Nullable>
<UseSystemDrawing>true</UseSystemDrawing>
</PropertyGroup>
</Project>
```
### 3. Verwenden Sie eine Kompatible Druck-API
Rufen Sie auf macOS `ShowPrintDialogAsync()` für Druckoperationen auf, anstatt sich auf Windows-only-Druckpfade zu verlassen.
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.
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
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>
<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.
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.