Zachowanie ShowPrintDialog w IronPrint (Po 2024.9)
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.
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>
Z jednym z tych środowisk na miejscu, ShowPrintDialog i ShowPrintDialogAsync wyświetlają dialog zgodnie z oczekiwaniami.

