# IronPrint on macOS with .NET 8 (Apple Silicon)
Uruchamianie IronPrint w aplikacji konsolowej .NET 8 na macOS z Apple Silicon może zakończyć się niepowodzeniem podczas kompilacji z powodu brakujących natywnych bibliotek, a `Printer.GetPrinterNamesAsync()` rzuca wyjątek w czasie wykonywania.
```txt
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
```
macOS nie dostarcza `libgdiplus`, implementacji GDI+, która jest zależna od IronPrint i `System.Drawing`, a docelowy `net8.0` nigdy nie włącza macOS-specyficznych API platformy. Oba braki muszą zostać zamknięte.
## Rozwiązanie
### 1. Zainstaluj natywną bibliotekę GDI+
Zainstaluj `libgdiplus` za pomocą Homebrew, aby GDI+ wsparcie, które Windows udostępnia domyślnie, było dostępne na macOS:
```bash
brew install mono-libgdiplus
```
Bez tej biblioteki, `System.Drawing` nie ma żadnego natywnego zaplecza do wywołania.
### 2. Wskaż macOS Framework
Wskaż Twój `.csproj` na macOS-specyficzny framework zamiast zwykłego `net8.0`:
```xml
<TargetFramework>net8.0-macos</TargetFramework>
```
To mówi .NET, aby używał macOS platfomowych API zamiast cross-platformowych starycznych.
[[w:(`net8.0-macos` nie jest częścią domyślnych szablonów aplikacji konsolowej. Zainstaluj obciążenie macOS lub zacznij od szablonu aplikacji macOS, aby uzyskać wstępnie skonfigurowane wsparcie.)]]
Kompletny plik projektu wygląda tak:
```xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0-macos</TargetFramework>
<Nullable>enable</Nullable>
<UseSystemDrawing>true</UseSystemDrawing>
</PropertyGroup>
</Project>
```
### 3. Użyj zgodnego API drukowania
Na macOS wywołuj `ShowPrintDialogAsync()` dla operacji drukowania zamiast polegać na ścieżkach drukowania tylko w Windows.
Uruchamianie IronPrint w aplikacji konsolowej .NET 8 na macOS z Apple Silicon może zakończyć się niepowodzeniem podczas kompilacji z powodu brakujących natywnych bibliotek, a Printer.GetPrinterNamesAsync() rzuca wyjątek w czasie wykonywania.
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
Text
macOS nie dostarcza libgdiplus, implementacji GDI+, która jest zależna od IronPrint i System.Drawing, a docelowy net8.0 nigdy nie włącza macOS-specyficznych API platformy. Oba braki muszą zostać zamknięte.
Rozwiązanie
1. Zainstaluj natywną bibliotekę GDI+
Zainstaluj libgdiplus za pomocą Homebrew, aby GDI+ wsparcie, które Windows udostępnia domyślnie, było dostępne na macOS:
brew install mono-libgdiplus
brew install mono-libgdiplus
SHELL
Bez tej biblioteki, System.Drawing nie ma żadnego natywnego zaplecza do wywołania.
2. Wskaż macOS Framework
Wskaż Twój .csproj na macOS-specyficzny framework zamiast zwykłego net8.0:
<TargetFramework>net8.0-macos</TargetFramework>
<TargetFramework>net8.0-macos</TargetFramework>
XML
To mówi .NET, aby używał macOS platfomowych API zamiast cross-platformowych starycznych.
Ostrzeżenie: net8.0-macos nie jest częścią domyślnych szablonów aplikacji konsolowej. Zainstaluj obciążenie macOS lub zacznij od szablonu aplikacji macOS, aby uzyskać wstępnie skonfigurowane wsparcie.
Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.