# .NET 8 ile macOS üzerinde IronPrint (Apple Silicon)
Apple Silicon macOS üzerinde .NET 8 konsol uygulamasında IronPrint çalıştırmak, eksik yerel kütüphanelerle derleme sırasında başarısız olabilir ve `Printer.GetPrinterNamesAsync()` çalışma zamanında atabilir.
```txt
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
```
macOS, IronPrint ve `System.Drawing`'nin bağımlı olduğu GDI+ uygulamasını `libgdiplus` yerine gönderir ve basit `net8.0` hedefi, macOS'a özgü platform API'larını asla etkinleştirmez. Her iki boşluğun da kapatılması gerekir.
## Çözüm
### 1. Yerel GDI+ Kütüphanesini Yükle
GDI+ desteğinin Windows tarafından varsayılan olarak sağlandığını macOS'te mevcut hale getirmek için `libgdiplus` Homebrew üzerinden yükleyin:
```bash
brew install mono-libgdiplus
```
Bu kütüphane olmadan, `System.Drawing` arka plana çağrı yapacak bir yerel arka uç yoktur.
### 2. macOS Çerçevesini Hedefle
Düz `net8.0` yerine, `.csproj`'inizi macOS'a özgü hedef çerçeveye yönlendirin:
```xml
<TargetFramework>net8.0-macos</TargetFramework>
```
Bu, .NET'e macOS platform API'lerini kullanmasını değil, çapraz platform stublarını kullanmasını söyler.
[[w:(`net8.0-macos`, varsayılan konsol uygulama şablonlarının bir parçası değildir. Yerel GDI+ Kütüphanesini Yükleyin veya önceden yapılandırılmış destek almak için bir macOS uygulama şablonundan başlayın.)]]
Tam bir proje dosyası şöyle görünür:
```xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0-macos</TargetFramework>
<Nullable>enable</Nullable>
<UseSystemDrawing>true</UseSystemDrawing>
</PropertyGroup>
</Project>
```
### 3. Uyumlu Bir Yazdırma API'si Kullanın
macOS'te, Windows'a özgü baskı yollarına güvenmek yerine, baskı işlemleri için `ShowPrintDialogAsync()` çağırın.
Apple Silicon macOS üzerinde .NET 8 konsol uygulamasında IronPrint çalıştırmak, eksik yerel kütüphanelerle derleme sırasında başarısız olabilir ve Printer.GetPrinterNamesAsync() çalışma zamanında atabilir.
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
Text
macOS, IronPrint ve System.Drawing'nin bağımlı olduğu GDI+ uygulamasını libgdiplus yerine gönderir ve basit net8.0 hedefi, macOS'a özgü platform API'larını asla etkinleştirmez. Her iki boşluğun da kapatılması gerekir.
Çözüm
1. Yerel GDI+ Kütüphanesini Yükle
GDI+ desteğinin Windows tarafından varsayılan olarak sağlandığını macOS'te mevcut hale getirmek için libgdiplus Homebrew üzerinden yükleyin:
brew install mono-libgdiplus
brew install mono-libgdiplus
SHELL
Bu kütüphane olmadan, System.Drawing arka plana çağrı yapacak bir yerel arka uç yoktur.
2. macOS Çerçevesini Hedefle
Düz net8.0 yerine, .csproj'inizi macOS'a özgü hedef çerçeveye yönlendirin:
<TargetFramework>net8.0-macos</TargetFramework>
<TargetFramework>net8.0-macos</TargetFramework>
XML
Bu, .NET'e macOS platform API'lerini kullanmasını değil, çapraz platform stublarını kullanmasını söyler.
Uyarı: net8.0-macos, varsayılan konsol uygulama şablonlarının bir parçası değildir. Yerel GDI+ Kütüphanesini Yükleyin veya önceden yapılandırılmış destek almak için bir macOS uygulama şablonundan başlayın.
Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.