IronPrint on macOS with .NET 8 (Apple Silicon)

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

Ejecutar IronPrint en una aplicación de consola .NET 8 en macOS Apple Silicon puede fallar en el momento de la compilación debido a bibliotecas nativas faltantes, y Printer.GetPrinterNamesAsync() lanza en tiempo de ejecución.

System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.

macOS no incluye libgdiplus, la implementación de GDI+ de la que IronPrint y System.Drawing dependen, y un objetivo net8.0 simple nunca habilita las API específicas de plataforma para macOS. Ambas brechas deben cerrarse.

Solución

1. Instalar la Biblioteca Nativa GDI+

Instale libgdiplus a través de Homebrew para que el soporte GDI+ que Windows proporciona por defecto esté disponible en macOS:

brew install mono-libgdiplus
brew install mono-libgdiplus
SHELL

Sin esta biblioteca, System.Drawing no tiene un backend nativo al que llamar.

2. Apuntar al Framework de macOS

Dirige tu .csproj al marco específico de macOS en lugar de un simple net8.0:

<TargetFramework>net8.0-macos</TargetFramework>
<TargetFramework>net8.0-macos</TargetFramework>
XML

Esto le dice a .NET que use las API de la plataforma macOS en lugar de los stubs multiplataforma.

Advertencianet8.0-macos no es parte de las plantillas predeterminadas de aplicaciones de consola. Instale la carga de trabajo de macOS o comience desde una plantilla de aplicación de macOS para obtener soporte preconfigurado.

Un archivo de proyecto completo se ve así:

<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. Use una API de Impresión Compatible

En macOS, llama a ShowPrintDialogAsync() para operaciones de impresión en lugar de depender de rutas de impresión exclusivas de Windows.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 44,051 | Versión: 2026.7 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPrint
ejecuta una muestra observa cómo tu documento llega a la impresora.