macOSにおけるIronPrintと.NET 8 (Apple Silicon)

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

Apple Silicon macOS上で.NET 8コンソールアプリでIronPrintを実行すると、ビルド時にネイティブライブラリが欠落していて失敗し、Printer.GetPrinterNamesAsync()がランタイムでスローされることがあります。

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

macOSには、IronPrintとnet8.0ターゲットはmacOS専用のプラットフォームAPIを有効にしません。これらのギャップは埋める必要があります。

解決策

1. ネイティブGDI+ライブラリをインストールする

Homebrewを通じてlibgdiplusをインストールし、Windowsがデフォルトで提供するGDI+サポートをmacOSで利用可能にします:

brew install mono-libgdiplus
brew install mono-libgdiplus
SHELL

このライブラリがないと、System.Drawingは呼び出すためのネイティブバックエンドがありません。

2. macOS Frameworkをターゲットにする

通常の.csprojを向けます:

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

これは.NETにクロスプラットフォームのスタブではなくmacOSのプラットフォームAPIを使用させます。

コマンドラインテンプレートには一部にnet8.0-macosが含まれていません。 macOSワークロードをインストールするか、macOSアプリアプリケーションテンプレートから開始して事前設定されたサポートを得ることができます。

完全なプロジェクトファイルはこのように見えます:

<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. 互換性のある印刷APIを使用する

macOSでは、Windows専用の印刷パスに依存せずにShowPrintDialogAsync()を印刷操作のために呼び出します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 44,051 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPrint
サンプルを実行する プリンターに出力されるドキュメントを見る。