IronPrint on macOS with .NET 8 (Apple Silicon)

This article was translated from English: Does it need improvement?
Translated
View the article in English

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
SHELL

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

Cela dit à .NET d'utiliser les APIs de la plateforme macOS plutôt que les stubs multiplateformes.

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

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
Rédacteur technique

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

Lire la suite
Prêt à commencer?
Nuget Téléchargements 44,051 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronPrint
exécuter un échantillon regarder votre document sortir de l'imprimante.