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
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>
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>
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.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.