IronPrint on macOS with .NET 8 (Apple Silicon)

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

Executar IronPrint em um aplicativo de console .NET 8 no macOS Apple Silicon pode falhar na hora da compilação com bibliotecas nativas ausentes, e Printer.GetPrinterNamesAsync() lança em tempo de execução.

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

O macOS não vem com libgdiplus, a implementação GDI+ da qual IronPrint e System.Drawing dependem, e um destino net8.0 simples nunca habilita as APIs de plataforma específicas do macOS. Ambas as lacunas precisam ser fechadas.

Solução

1. Instale a Biblioteca Nativa GDI+

Instale libgdiplus através do Homebrew para que o suporte GDI+ que o Windows fornece por padrão esteja disponível no macOS:

brew install mono-libgdiplus
brew install mono-libgdiplus
SHELL

Sem esta biblioteca, System.Drawing não tem backend nativo para chamar.

2. Direcione ao Framework do macOS

Aponte seu .csproj ao framework de destino específico do macOS em vez de um net8.0 simples:

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

Isso diz ao .NET para usar as APIs de plataforma do macOS em vez dos stubs multiplataforma.

Avisonet8.0-macos não faz parte dos templates padrão de aplicativos de console. Instale a carga de trabalho macOS ou comece a partir de um template de aplicativo macOS para obter suporte pré-configurado.

Um arquivo de projeto completo se parece com isso:

<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 uma API de Impressão Compatível

No macOS, chame ShowPrintDialogAsync() para operações de impressão em vez de depender de caminhos de impressão apenas para Windows.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Baixar 44,051 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPrint
executar um exemplo Veja seu documento chegar à impressora.