# 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:
```txt
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.
[[w:(Opcja 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:
```xml
<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.
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 TargetFrameworkse.g. net462; net472; net7.0-windows; net7.0-macos; net7.0-maccatalyst; net7.0-android)'
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)'
Text
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żenie: Opcja 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:
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ęczników.