Migracja

Uaktualnij do Doconut na .NET 8

Dwie migracje znajdują się na tej stronie: aktualizacja wersji pakietu w .NET 8 oraz przeniesienie integracji ze starszego frameworka Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) na API .NET 8.

Aktualizacja wersji pakietu

  1. Zaktualizuj pakiet (oraz wszystkie pakiety wtyczek — utrzymaj wersje zgodne):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom
  1. Sprawdź okno licencji. Licencja obejmuje zakres wersji. Jeśli nowa wersja znajduje się poza tym zakresem, otwieranie jest zablokowane — OpenDocumentAsync rzuca LicenseException (szybkie niepowodzenie); nie przechodzi do znaku wodnego, a IsVersionValid zwraca false. Odnów, zamień plik .lic i uruchom ponownie aplikację, aby AddDoconut() załadował nową licencję.
  2. Przebuduj i pozwól NuGet przywrócić zadeklarowane wersje zależności — nie przypinaj ponownie System.Text.Json ani System.Drawing.Common (zobacz sekcję Rozwiązywanie problemów, aby poznać dokładne błędy, które powoduje downgrade).
  3. Przeprowadź test dymny jednego dokumentu z każdej rodziny formatów, której używasz.

Migracja z .NET 6 / .NET Standard 2.0

API .NET 8 to przedefiniowanie wokół DI i asynchroniczności. Mapowanie:

Kwestia.NET 6 / Standard 2.0.NET 8
KonfiguracjaUtwórz Viewer(cache, httpContextAccessor, licensePath)builder.Services.AddDoconut(options => …) + wstrzyknij Viewer
LicencjaStatyczne Viewer.DoconutLicense(path) + SetLicensePlugin(...) dla każdej wtyczkioptions.LicensePath / LicenseContent / LicenseStream — jedna licencja, automatyczne wykrywanie plików wtyczek
Otwórzviewer.OpenDocument(...) (synchroniczne)await viewer.OpenDocumentAsync(...)
Zamknijviewer.CloseDocument() lub viewer.Dispose()viewer.CloseDocument(token) — Viewer nie jest IDisposable
Czas życiaViewer implementuje IDisposable, przechowuje otwarty dokumentViewer jest bezstanowy; sesje przechowywane są w pamięci podręcznej pod tokenami
Konwerterwłaściwość viewer.ConverterWtyczka Converter (AddPlugin<ConverterPlugin>()) + usługa DocumentConverter
Klasy konfiguracyjneprzestrzenie nazw Doconut.Configs.View.*Wszystko w przestrzeni nazw Doconut
Środkowe oprogramowanieRęczne podłączanie obsługiapp.UseDoconutResources() + app.UseDoconut()

Typowy przykład przed/po:

text
// .NET 6 (old API, shown for contrast — not valid on .NET 8)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());
csharp
// .NET 8 — Viewer injected, license configured once in AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });

Migracja z .NET Framework 4.7 (Web Forms)

Viewer w wersji 4.7 jest WebControl; .NET 8 zastępuje model kontrolki środkowym oprogramowaniem + usługą DI:

  • Kontrola <doconut:DocViewer runat=server> znika — strona hostuje parę elementów div widgetu, a Twój punkt końcowy zwraca token (Quick Start pokazuje ten wzorzec).
  • Statyczne metody licencji → źródła licencji DoconutOptions.
  • Synchroniczne OpenDocument → await OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() istnieją w obu światach — wersje .NET 8 przyjmują obiekty ScriptConfig/CssConfig i są zabezpieczone licencją.
  • Właściwości kontrolki (ShowThumbs, PageZoom, FixedZoom, …) → te same nazwy w ViewerConfig / opcjach JS docViewer.
  • Metody eksportu zwracające byte[] → asynchroniczne API eksportu adnotacji w Viewer.

Zaplanuj to jako przepisanie warstwy hostującej wokół niezmienionego konceptu: otwórz → token → widget.

Uwaga dotycząca nazewnictwa

We wszystkich frameworkach klasa to Viewer — jeśli znajdziesz DocumentViewer w starych fragmentach kodu lub artykułach firm trzecich, ten typ nigdy nie istniał w SDK.

Lista kontrolna migracji

  1. Zamień pakiety; dopasuj wersje pakietów wtyczek.
  2. Przenieś konfigurację licencji do AddDoconut(); usuń statyczne wywołania licencji.
  3. Zrób wywołania otwierania asynchroniczne; zamień Dispose/bezparametrowe CloseDocument na CloseDocument(token).
  4. Zastąp użycia viewer.Converter rejestracją wtyczki Converter + DocumentConverter.
  5. Ponownie przetestuj ścieżkę bezpieczeństwa: AddSession()/UseSession() są teraz wymagane przy domyślnym zabezpieczeniu.

Czy ta strona była pomocna?