IronPrint on macOS with .NET 8 (Apple Silicon)
Exécuter IronPrint dans une application console .NET 8 sur macOS Apple Silicon peut échouer au moment de la fabrication avec des bibliothèques natives manquantes, et Printer.GetPrinterNamesAsync() se jette à l'exécution.
System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.
macOS ne prend pas en charge libgdiplus, l'implémentation GDI+ dont IronPrint et System.Drawing dépendent, et une cible net8.0 ne permet jamais les APIs spécifiques à la plateforme macOS. Les deux lacunes doivent être comblées.
Solution
1. Installez la bibliothèque GDI+ native
Installez libgdiplus via Homebrew pour que le support GDI+ que Windows fournit par défaut soit disponible sur macOS :
brew install mono-libgdiplus
brew install mono-libgdiplus
Sans cette bibliothèque, System.Drawing n'a pas de backend natif à appeler.
2. Ciblez le Framework macOS
Pointez votre .csproj sur le framework cible spécifique à macOS au lieu de net8.0 :
<TargetFramework>net8.0-macos</TargetFramework>
<TargetFramework>net8.0-macos</TargetFramework>
Cela dit à .NET d'utiliser les APIs de la plateforme macOS plutôt que les stubs multiplateformes.
net8.0-macos ne fait pas partie des templates d'application console par défaut. Installez la charge de travail macOS ou commencez à partir d'un template d'application macOS pour obtenir un support préconfiguré.Un fichier de projet complet ressemble à ceci :
<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. Utilisez une API d'impression compatible
Sur macOS, appelez ShowPrintDialogAsync() pour les opérations d'impression au lieu de compter sur les chemins d'impression uniquement Windows.

