.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.
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:
brew install mono-libgdiplus
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:
<TargetFramework>net8.0-macos</TargetFramework>
<TargetFramework>net8.0-macos</TargetFramework>
Bu, .NET'e macOS platform API'lerini kullanmasını değil, çapraz platform stublarını kullanmasını söyler.
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:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0-macos</TargetFramework>
<Nullable>enable</Nullable>
<UseSystemDrawing>true</UseSystemDrawing>
</PropertyGroup>
</Project>
<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.

