IronPrint on macOS with .NET 8 (Apple Silicon)

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

Das Ausführen von IronPrint in einer .NET 8 Konsolen-App auf Apple Silicon macOS kann zur Build-Zeit mit fehlenden nativen Bibliotheken fehlschlagen, und Printer.GetPrinterNamesAsync() gibt zur Laufzeit aus.

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

macOS stellt libgdiplus nicht zur Verfügung, die GDI+ Implementierung, von der IronPrint und System.Drawing abhängen, und ein einfaches net8.0 Ziel aktiviert nie die macOS-spezifischen Plattform-APIs. Beide Lücken müssen geschlossen werden.

Lösung

1. Installieren Sie die native GDI+-Bibliothek

Installieren Sie libgdiplus über Homebrew, sodass die GDI+ Unterstützung, die Windows standardmäßig bietet, auf macOS verfügbar ist:

brew install mono-libgdiplus
brew install mono-libgdiplus
SHELL

Ohne diese Bibliothek hat System.Drawing kein natives Backend, um darauf zuzugreifen.

2. Zielen Sie auf das macOS-Framework

Richten Sie Ihr .csproj auf das macOS-spezifische Ziel-Framework anstelle eines einfachen net8.0 aus:

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

Dies teilt .NET mit, die macOS-Plattform-APIs anstelle der plattformübergreifenden stubs zu verwenden.

Warnungnet8.0-macos ist nicht Teil der Standard-Konsolen-App-Vorlagen. Installieren Sie die macOS-Arbeitslast oder starten Sie von einer macOS-App-Vorlage, um vorkonfigurierte Unterstützung zu erhalten.

Eine vollständige Projektdatei sieht so aus:

<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. Verwenden Sie eine Kompatible Druck-API

Rufen Sie auf macOS ShowPrintDialogAsync() für Druckoperationen auf, anstatt sich auf Windows-only-Druckpfade zu verlassen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 44,051 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPrint
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Dokument auf dem Drucker ausgegeben wird.