.NET 8 ile macOS üzerinde IronPrint (Apple Silicon)

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

Apple Silicon macOS üzerinde .NET 8 konsol uygulamasında IronPrint çalıştırmak, eksik yerel kütüphanelerle derleme sırasında başarısız olabilir ve Printer.GetPrinterNamesAsync() çalışma zamanında atabilir.

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

macOS, IronPrint ve System.Drawing'nin bağımlı olduğu GDI+ uygulamasını libgdiplus yerine gönderir ve basit net8.0 hedefi, macOS'a özgü platform API'larını asla etkinleştirmez. Her iki boşluğun da kapatılması gerekir.

Çözüm

1. Yerel GDI+ Kütüphanesini Yükle

GDI+ desteğinin Windows tarafından varsayılan olarak sağlandığını macOS'te mevcut hale getirmek için libgdiplus Homebrew üzerinden yükleyin:

brew install mono-libgdiplus
brew install mono-libgdiplus
SHELL

Bu kütüphane olmadan, System.Drawing arka plana çağrı yapacak bir yerel arka uç yoktur.

2. macOS Çerçevesini Hedefle

Düz net8.0 yerine, .csproj'inizi macOS'a özgü hedef çerçeveye yönlendirin:

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

Bu, .NET'e macOS platform API'lerini kullanmasını değil, çapraz platform stublarını kullanmasını söyler.

Uyarınet8.0-macos, varsayılan konsol uygulama şablonlarının bir parçası değildir. Yerel GDI+ Kütüphanesini Yükleyin veya önceden yapılandırılmış destek almak için bir macOS uygulama şablonundan başlayın.

Tam bir proje dosyası şöyle görünür:

<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. Uyumlu Bir Yazdırma API'si Kullanın

macOS'te, Windows'a özgü baskı yollarına güvenmek yerine, baskı işlemleri için ShowPrintDialogAsync() çağırın.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 44,051 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPrint
bir örnek çalıştır belgenizin yazıcıya ulaşmasını izleyin.