Zachowanie ShowPrintDialog w IronPrint (Po 2024.9)

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

ShowPrintDialog i ShowPrintDialogAsync nie wyrzucają już wyjątku, gdy są wywoływane na nieobsługiwanym środowisku docelowym. Od wersji 2024.9, zamiast tego logują ostrzeżenie i przechodzą do PrintAsync().

Przed tą zmianą wywołanie którejkolwiek z metod bez kompatybilnego TargetFramework powodowało następujący błąd:

System.AggregateException: 'One or more errors occurred.
(Please try Print/PrintAsync since ShowPrintDialog/ShowPrintDialogAsync in NET Core or NET Standard,
it required UI component so please set more specific OS TargetFrameworks
e.g. net462; net472; net7.0-windows; net7.0-macos; net7.0-maccatalyst; net7.0-android)'

Metody dialogu potrzebują komponentu UI, który nie jest dostępny pod zwykłymi celami .NET Core lub .NET Standard. Wcześniejsze kompilacje traktowały to jako twardą awarię i rzucały wyjątek. Wyjątek przeszkadzał w czasie wykonywania, więc zachowanie zostało celowo zmienione w 2024.9.

Rozwiązanie

Opcja awaryjna jest automatyczna, ale można kontrolować, która ścieżka działa, wybierając odpowiednią docelową platformę.

1. Polegać na Automatycznej Opcji Awaryjnej

W przypadku nieobsługiwanego środowiska, wywołanie loguje teraz ostrzeżenie i kieruje do PrintAsync() zamiast wyrzucać wyjątek. Istniejący kod działa nadal bez awarii, choć nie pojawia się żaden dialog drukowania.

OstrzeżenieOpcja awaryjna drukuje bez dialogu. Użytkownicy nie widzą promptu drukowania na nieobsługiwanych celach, więc nie polegaj na tym, że dialog się pokaże, chyba że celujesz w framework z obsługą UI.

2. Skieruj się ku Frameworkowi z Obsługą UI dla Dialogu

Aby uzyskać faktyczny dialog drukowania, zbuduj w oparciu o cel specyficzny dla systemu operacyjnego, który obejmuje obsługę UI:

<TargetFrameworks>net462;net472;net7.0-windows;net7.0-macos;net7.0-maccatalyst;net7.0-android</TargetFrameworks>
<TargetFrameworks>net462;net472;net7.0-windows;net7.0-macos;net7.0-maccatalyst;net7.0-android</TargetFrameworks>
XML

Z jednym z tych środowisk na miejscu, ShowPrintDialog i ShowPrintDialogAsync wyświetlają dialog zgodnie z oczekiwaniami.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 44,051 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Chcesz szybkiego dowodu? PM > Install-Package IronPrint
uruchom próbkę obserwuj, jak twój dokument trafia do drukarki.