IRONSOFTWAREHOME
VIDEOS

Migrating from Accusoft BarcodeXpressto IronBarcode

Curtis Chau
Curtis Chau
Updated: 3. Mai 2026

Der größte Teil der Arbeit bei dieser Migration besteht aus dem Löschen von Dateien. Das Zwei-Schlüssel-Lizenzsystem — SetSolutionName, SetSolutionKey und SetOEMLicenseKey für Runtime — verschwindet vollständig. Die tatsächlichen Barcode-Operationen (ein Bild lesen, einen Barcode in eine Datei schreiben) werden in kürzere IronBarcode-Äquivalente übersetzt. Wenn Ihr Codebase eine BarcodeService-Klasse hat, die BarcodeXpress einbindet, ist der Lizenzcode oft ein großer Anteil davon. Nach der Migration schrumpft diese Klasse.

Warum von Accusoft BarcodeXpressmigrieren?

Teams, die von BarcodeXpress migrieren, berichten von folgenden Auslösern:

Bewertungsmodus blockiert genaues Benchmarking: Ohne gültigen OEM-/Laufzeit-Schlüssel versieht BarcodeXpress dekodierte Ergebnisse mit dem literal String " UNLICENSED accusoft.com " und wendet denselben Stempel auf generierte 2D-Barcodes an. Vor dem Kauf produziertes Genauigkeitstest auf echten Dokumenten ergibt dieses mit Wasserzeichen versehene Ergebnis, sodass Sie nicht überprüfen können, ob die Bibliothek Ihre tatsächlichen Scan-Typen korrekt liest, bevor Sie sich zum Kauf verpflichten.

Zwei-Schlüssel-Lizenzierung erhöht den Betriebsaufwand: BarcodeXpress trennt die SDK-Lizenz (SetSolutionName + SetSolutionKey) von der OEM/Runtime-Lizenz (SetOEMLicenseKey). CI/CD-Pipelines, Docker-Container und Container-Orchestrierungsplattformen benötigen jeweils zwei Schlüsselsysteme, die als separate Geheimnisse verwaltet werden. Ein fehlender oder ungültiger Laufzeitschlüssel fällt auf das mit Wasserzeichen versehene Ergebnis zurück, anstatt einen Fehler anzuzeigen, wodurch ein Fehlerzustand entsteht, der automatisierte Tests bestehen kann, wenn die Überprüfungen nur auf nicht-nulle Ergebnisse prüfen.

Mindestens fünf Laufzeitlizenzen für jede Produktionsumgebung: Selbst für eine Einzelserver-Bereitstellung müssen mindestens fünf Laufzeitlizenzen erworben werden. Teams, die einen Produktionsserver und einen Staging-Server betreiben, zahlen mindestens zehn Laufzeitlizenzen, unabhängig von der tatsächlichen Nutzung.

40 Seiten pro Minute Standard Edition Höchstgeschwindigkeit: Die Standard Edition drosselt die Verarbeitung auf 40 Seiten pro Minute. Bei diesem Tempo dauert die Bearbeitung eines Stapels von 100.000 Dokumenten etwa 41 Stunden. Um die Beschränkung aufzuheben, ist ein Upgrade auf die Professional Edition erforderlich, die zusätzlich zu den bereits erworbenen Laufzeitlizenzen höhere Kosten pro Entwicklerplatz verursacht.

Keine native PDF-Unterstützung: PDF-Dateien müssen mithilfe einer separaten Bibliothek in Bilder umgewandelt werden, bevor BarcodeXpress sie lesen kann. Diese externe Abhängigkeit verursacht zusätzliche Lizenzkosten, einen weiteren Konvertierungsschritt und einen erhöhten Speicherbedarf durch das Speichern der gerenderten Seitenbilder.

Thread-Sicherheit erfordert Instanzisolierung: Das reader-Objekt von BarcodeXpress ist zustandsbehaftet und nicht sicher für parallelen Zugriff. Parallele Batch-Verarbeitung erfordert eine voll initialisierte BarcodeXpress-Instanz pro Thread, wobei die vollständige Zwei-Schicht-Lizenzinitialisierung in jedem Thread-Kontext wiederholt wird.

Das grundsätzliche Problem

BarcodeXpress erfordert eine mehrstufige Initialisierung, ein Bitmap-Laden und eine BarcodeType[]-Konfiguration, bevor ein Barcode gelesen werden kann:

using var bitmap = new Bitmap(imagePath);
var barcodeXpress = new BarcodeXpress(".");
barcodeXpress.Licensing.SetSolutionName("AcmeCorp");
barcodeXpress.Licensing.SetSolutionKey(1, 2, 3, 4);
barcodeXpress.Licensing.SetOEMLicenseKey("2.0.OEMLicenseStringFromAccusoft...");

barcodeXpress.reader.BarcodeTypes = new[]
{
    BarcodeType.Code128Barcode,
    BarcodeType.DataMatrixBarcode,
    BarcodeType.QRCodeBarcode
};

Result[] results = barcodeXpress.reader.Analyze(bitmap);
var value = results.FirstOrDefault()?.BarcodeValue;

IronBarcode ersetzt diesen gesamten Block durch einen einzigen statischen Aufruf:

var value = BarcodeReader.Read(imagePath).First().Value;

IronBarcode vs. Accusoft BarcodeXpress: Funktionsvergleich

FeatureAccusoft BarcodeXpressIronBarcode
LizenzmodellSDK-Schlüssel + OEM-/Laufzeit-Schlüssel (separate Einkäufe)Ein einziger ewiger Schlüssel
Mindestlaufzeitlizenzen5 (auch für 1 Server)Konzept ohne Laufzeitlizenz
AuswertungsmodusDekodierte Werte und generierte 2D-Barcodes mit " UNLICENSED accusoft.com " gestempeltVollständige Werte zurückgegeben; wasserzeichen nur auf der generierten Ausgabe
Durchsatzgrenze40 PPM (Standardausgabe)Keine Begrenzung auf keiner Stufe
automatische FormaterkennungHandbuch — muss ein BarcodeType[]-Array zu BarcodeTypes zuweisenAutomatischer Ablauf über alle unterstützten Formate hinweg
PDF-UnterstützungExterne Bibliothek erforderlich, um Seiten in Bitmaps zu rendernNativ — BarcodeReader.Read("doc.pdf")
API-StilInstanzbasiert; Bitmap-Eingabe; Eigenschafts-/MethodenkonfigurationStatische Factory-Methoden, flüssige API
Thread-SicherheitInstanz pro Thread erforderlichZustandslose statische Methoden — threadsicher
Docker-LizenzkonfigurationLizenzdatei einbinden oder LizenzserverEinzelne Umgebungsvariable
CI/CD-Geheimnisse erforderlichSDK-Schlüsselpaar + OEM-/Laufzeit-SchlüsselEin Geheimnis
.NET Framework / .NET CoreSeparate Pakete: Accusoft.BarcodeXpress.Net und Accusoft.BarcodeXpress.NetCoreSingle IronBarcode package (.NET Framework 4.6.2+, .NET Core 3.1+, .NET 5–8)
Linux/macOSJa (über .NetCore-Paket)Ja – Windows x64/x86, Linux x64, macOS x64/ARM
QR-Code mit LogoManuelle GDI+-Überlagerung erforderlichAddBrandLogo("logo.png") eingebaut
Einstiegspreis$1,960+ SDK + mindestens 5 Laufzeitlizenzen749 $ (dauerhaft) (Lite, 1 Entwickler)
DauerlizenzNicht Standard – bitte kontaktieren Sie den Vertrieb.Ja, alle Stufen.

Schnellstart: Migration von Accusoft BarcodeXpresszu IronBarcode

Schritt 1: Ersetzen des NuGet-Pakets

dotnet remove package Accusoft.BarcodeXpress.NetCore
dotnet add package IronBarcode
SHELL

Schritt 2: Namespaces aktualisieren

// Remove
using Accusoft.BarcodeXpressSdk;

// Add
using IronBarCode;

Schritt 3: Lizenz initialisieren

Fügen Sie die Lizenzinitialisierung einmal beim Anwendungsstart in Program.cs, Startup.cs oder Ihrer Dependency Injection-Konfiguration hinzu:

// Add once at application startup
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Im Produktionsbetrieb lesen Sie den Schlüssel aus einer Umgebungsvariablen oder Ihrem Geheimnismanager:

IronBarCode.License.LicenseKey =
    Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
    ?? throw new InvalidOperationException("IronBarcode license key not configured");

Kein SetSolutionKey, kein SetOEMLicenseKey, keine per-Server Runtime-Aktivierung. Das ist die vollständige Lizenzkonfiguration.

Beispiele für die Code-Migration

Lizenzinitialisierung

BarcodeXpress-Ansatz:

using Accusoft.BarcodeXpressSdk;

public class BarcodeService
{
    private readonly BarcodeXpress _barcodeXpress;

    public BarcodeService()
    {
        // Constructor takes the path containing the Barcode Xpress runtime files.
        _barcodeXpress = new BarcodeXpress(".");

        // SDK license
        _barcodeXpress.Licensing.SetSolutionName("AcmeCorp");
        _barcodeXpress.Licensing.SetSolutionKey(1, 2, 3, 4);

        // OEM/runtime license — separate purchase, minimum 5 licenses required.
        // Without this call, decoded values and generated 2D barcodes are
        // stamped with " UNLICENSED accusoft.com ".
        _barcodeXpress.Licensing.SetOEMLicenseKey(
            "2.0.OEMLicenseStringFromAccusoft...");
    }
}

IronBarcode -Ansatz:

using IronBarCode;

// In Program.cs
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");

// BarcodeService no longer needs a constructor or any license management
public class BarcodeService
{
    // Ready to use — no initialization needed
}

Der BarcodeXpress-Konstruktor existiert ausschließlich, um zwei Lizenzschlüsselsysteme und den Laufzeitpfad zu verwalten. IronBarcode ersetzt es mit einer einzigen Zeile beim Anwendungsstart. Die BarcodeService-Klasse benötigt überhaupt keinen Konstruktor.

BarCode lesen

BarcodeXpress-Ansatz:

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public string ReadFirstBarcode(string imagePath)
{
    // Analyze takes a System.Drawing.Bitmap; the SDK does not read PDFs directly.
    using var bitmap = new Bitmap(imagePath);

    _barcodeXpress.reader.BarcodeTypes = new[]
    {
        BarcodeType.Code128Barcode,
        BarcodeType.DataMatrixBarcode,
        BarcodeType.QRCodeBarcode
    };

    Result[] results = _barcodeXpress.reader.Analyze(bitmap);

    return results.FirstOrDefault()?.BarcodeValue;
}

IronBarcode -Ansatz:

using IronBarCode;

public string ReadFirstBarcode(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.First().Value;
}

Der BarcodeTypes Array-Filter und der new Bitmap(...) Lade-Schritt verschwinden beide. IronBarcode erkennt automatisch das Format in allen unterstützten Symbologien und akzeptiert direkt einen Dateipfad. Wenn ein Lieferant von Code 128 auf DataMatrix umstellt, funktioniert IronBarcode weiterhin ohne Codeänderung. Auch Ergebnisattribute ändern sich: BarcodeValue wird zu Value, und BarcodeType wird zu Format. Eine lösungsweite Such- und Ersetzungsfunktion übernimmt beide Umbenennungen.

Lesen mehrerer Barcodes aus einem Bild

BarcodeXpress-Ansatz:

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public IReadOnlyList<string> ReadAllBarcodes(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    _barcodeXpress.reader.BarcodeTypes = new[]
    {
        BarcodeType.Code128Barcode,
        BarcodeType.QRCodeBarcode
    };

    Result[] results = _barcodeXpress.reader.Analyze(bitmap);
    return results.Select(r => r.BarcodeValue).ToList();
}

IronBarcode -Ansatz:

using IronBarCode;

public IReadOnlyList<string> ReadAllBarcodes(string imagePath)
{
    var options = new BarcodeReaderOptions { ExpectMultipleBarcodes = true };
    var results = BarcodeReader.Read(imagePath, options);
    return results.Select(r => r.Value).ToList();
}

ExpectMultipleBarcodes sagt IronBarcode, nach dem ersten Treffer weiter zu scannen, was bei Dokumenten mit mehreren Codes in verschiedenen Regionen nützlich ist. Weitere Details zu den Leseoptionen finden Sie in der IronBarcode -Lesedokumentation .

Batch-Verarbeitung

BarcodeXpress ist instanzbasiert und sein reader-Objekt ist zustandsbehaftet, daher erfordert parallele Batch-Verarbeitung eine Instanz pro Thread mit der vollständigen Zwei-Schicht-Lizenzinitialisierung pro Thread. Die statischen Methoden von IronBarcode sind zustandslos, daher erfordert Parallel.ForEach keine Instanzverwaltung.

BarcodeXpress-Ansatz:

using System.Collections.Generic;
using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public Dictionary<string, string> ProcessBatch(IEnumerable<string> imagePaths)
{
    var results = new Dictionary<string, string>();

    foreach (var path in imagePaths)
    {
        using var bitmap = new Bitmap(path);
        _barcodeXpress.reader.BarcodeTypes = new[]
        {
            BarcodeType.Code128Barcode,
            BarcodeType.QRCodeBarcode
        };

        Result[] barcodes = _barcodeXpress.reader.Analyze(bitmap);
        if (barcodes.Length > 0)
            results[path] = barcodes[0].BarcodeValue;
    }

    return results;
}

IronBarcode -Ansatz:

using IronBarCode;
using System.Collections.Concurrent;
using System.Threading.Tasks;

public Dictionary<string, string> ProcessBatch(string[] imagePaths)
{
    var results = new ConcurrentDictionary<string, string>();

    Parallel.ForEach(imagePaths, file =>
    {
        var r = BarcodeReader.Read(file);
        var first = r.FirstOrDefault();
        if (first != null)
            results[file] = first.Value;
    });

    return new Dictionary<string, string>(results);
}

Falls die Begrenzung von 40 Seiten pro Minute in der BarcodeXpress Standard Edition Sie dazu veranlasst hat, Code zur Behandlung der Ratenbegrenzung hinzuzufügen – z. B. Wartezeiten zwischen 40er-Gruppen, einen Minutenzähler oder Verzögerungen –, entfernen Sie diesen Code vollständig. IronBarcode hat keine Durchsatzbegrenzung.

PDF-Unterstützung hinzufügen

BarcodeXpress liest Barcodes nicht direkt aus PDF-Dateien. Die übliche Lösung besteht darin, eine separate PDF-Rendering-Bibliothek hinzuzufügen, jede Seite als Bild im Speicher zu rendern und diese Bilder dann nacheinander an den Barcode-Leser zu übergeben.

BarcodeXpress-Ansatz:

// Requires a separate PDF library (not shown — varies by team choice)
// Pattern: render each PDF page to a Bitmap, then pass it to Analyze.
foreach (Bitmap pageBitmap in pdfRenderer.RenderPages("document.pdf"))
{
    using (pageBitmap)
    {
        _barcodeXpress.reader.BarcodeTypes = Enum.GetValues(typeof(BarcodeType));
        Result[] barcodes = _barcodeXpress.reader.Analyze(pageBitmap);
        // ... collect results
    }
}

IronBarcode -Ansatz:

using IronBarCode;

// One call — no rendering step, no external dependency
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: [{barcode.Format}] {barcode.Value}");
}

Wenn Aspose.PDF, PdfiumViewer, itext7 oder irgendeine andere PDF-Bibliothek allein hinzugefügt wurde, um den BarcodeXpress-Leseworkflow zu unterstützen, kann sie nach der Migration entfernt werden. Weitere Optionen, einschließlich der Auswahl eines Seitenbereichs, finden Sie im IronBarcode PDF-Leseguide.

Barcode-Erzeugung

BarcodeXpress-Ansatz:

using System.Drawing;
using Accusoft.BarcodeXpressSdk;

public void GenerateBarcode(string data, string outputPath)
{
    _barcodeXpress.writer.BarcodeType = BarcodeType.Code128Barcode;
    _barcodeXpress.writer.BarcodeValue = data;

    // CreateBitmap returns a System.Drawing.Bitmap; persist via Bitmap.Save.
    using Bitmap bitmap = _barcodeXpress.writer.CreateBitmap();
    bitmap.Save(outputPath);
}

IronBarcode -Ansatz:

using IronBarCode;

public void GenerateBarcode(string data, string outputPath)
{
    BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .SaveAsPng(outputPath);
}

Die fließende Kette ersetzt die Eigenschaftenzuweisungen, den CreateBitmap-Aufruf und den Bitmap.Save-Schritt. Um den Barcode als Binärdaten für die Speicherung in einer Datenbank oder den Abruf von einer API zu erhalten:

byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ToPngBinaryData();

QR-Code-Generierung

BarcodeXpress-Ansatz:

_barcodeXpress.writer.BarcodeType = BarcodeType.QRCodeBarcode;
_barcodeXpress.writer.BarcodeValue = data;

using Bitmap bitmap = _barcodeXpress.writer.CreateBitmap();
bitmap.Save("qr.png");
// Logo overlay required manual GDI+ drawing on the returned Bitmap

IronBarcode -Ansatz:

using IronBarCode;
using IronSoftware.Drawing;

// Simple QR
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

// With branded logo
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");

// With high error correction (for logo overlays)
QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded-high-ecc.png");

// Colored QR code
QRCodeWriter.CreateQrCode("https://example.com", 300)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("qr-colored.png");

Logoeinbettung, Fehlerkorrekturstufe und Farbanpassung sind allesamt in die Fluent API integriert. BarcodeXpress erfordert für jede dieser Funktionen ein manuelles GDI+-Zeichnen nach dem ersten Schreiben der Datei. Für mehr QR-Code-Optionen lesen Sie den QR-Code-Erstellungsguide.

Accusoft BarcodeXpressAPI zu IronBarcode Mapping-Referenz

Accusoft BarcodeXpressIronBarcode
new BarcodeXpress(".")Statische Methoden – keine Instanz erforderlich
Licensing.SetSolutionName("...")IronBarCode.License.LicenseKey = "key"
Licensing.SetSolutionKey(a, b, c, d)(removed — not needed)
Licensing.SetOEMLicenseKey(string)(removed — no OEM/runtime key concept)
new Bitmap(path) + reader.Analyze(bitmap)BarcodeReader.Read(path)
reader.BarcodeTypes = new[] { BarcodeType.Code128Barcode, ... }(removed — auto-detection handles all formats)
result.BarcodeValueresult.Value
result.BarcodeTyperesult.Format
writer.BarcodeType = BarcodeType.Code128BarcodeBarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
writer.BarcodeValue = "data"(first argument to CreateBarcode)
writer.CreateBitmap() + bitmap.Save(path).SaveAsPng(path)
writer.BarcodeType = BarcodeType.QRCodeBarcodeQRCodeWriter.CreateQrCode(data, size)
40 ppm StandardgrenzwertKeine Durchsatzbegrenzung auf keiner Ebene

Gängige Migrationsprobleme und Lösungen

Problem 1: Kompilierungsfehler bei Eigenschaftsnamen

BarcodeXpress: Ergebnisobjekte bieten BarcodeValue und BarcodeType, die in IronBarcode nicht existieren.

Lösung: Führen Sie vor dem Erstellen eine Suchen-und-Ersetzen-Operation in der gesamten Lösung durch:

grep -r "\.BarcodeValue" --include="*.cs" .
grep -r "\.BarcodeType" --include="*.cs" .
SHELL

Ersetzen Sie result.BarcodeValue mit result.Value und result.BarcodeType mit result.Format in allen gefundenen Dateien.

Problem 2: Verwaiste Lizenzkonfigurationsaufrufe

BarcodeXpress: SetSolutionName, SetSolutionKey und SetOEMLicenseKey-Aufrufe — plus alle benutzerdefinierten Assertions, die das " UNLICENSED accusoft.com "-Wasserzeichen im entschlüsselten Ergebnis erkennen — existieren in vielen Codebasen als Schutzmechanismen gegen den wasserzeichenbehafteten Ausfallmodus.

Lösung: Lokalisieren und löschen Sie alle derartigen Aufrufstellen — IronBarcode hat keinen entsprechenden Zustand. Der Lizenzschlüssel ist entweder gültig oder nicht, und wenn nicht, gelten die Testbeschränkungen einheitlich, anstatt einzelne dekodierte Werte abzuwerten:

grep -r "SetOEMLicenseKey" --include="*.cs" .
grep -r "SetSolutionName" --include="*.cs" .
grep -r "SetSolutionKey" --include="*.cs" .
grep -r "UNLICENSED accusoft" --include="*.cs" .
SHELL

Alle diese Anrufseiten können gelöscht werden.

Problem 3: Docker-Lizenzdatei in Umgebungsvariable einbinden

BarcodeXpress: Docker-Deployments binden typischerweise eine BarcodeXpress-Lizenzkonfigurationsdatei an einen bekannten Pfad im Container ein, mithilfe einer COPY- oder Volume-Mount-Anweisung.

Lösung: Entfernen Sie die Konfigurationsdateikopie und ersetzen Sie sie durch eine Umgebungsvariable:

# Remove this
COPY accusoft-license.lic /app/license/

# Add this
ENV IRONBARCODE_LICENSE=YOUR-LICENSE-KEY
Text

Beim Anwendungsstart:

IronBarCode.License.LicenseKey =
    Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");

In Kubernetes wird der Lizenzschlüssel zu einer geheimen Referenz in der Pod-Spezifikation:

env:
  - name: IRONBARCODE_LICENSE
    valueFrom:
      secretKeyRef:
        name: ironbarcode-secrets
        key: license-key
Text

Problem 4: Code zur Behandlung von Ratenbegrenzungen

BarcodeXpress: Teams, die große Stapel unterhalb der Obergrenze von 40 PPM der Standard Edition verarbeiten, fügen oft Code hinzu, um zwischen Dokumentengruppen zu pausieren, Minutenzähler zu verfolgen oder Verzögerungen einzuführen, um innerhalb des Limits zu bleiben.

Lösung: Entfernen Sie den gesamten Code zur Ratenbegrenzung. Finden Sie es mit:

grep -r "40\|PPM\|pagesPerMinute\|minuteStart" --include="*.cs" .
SHELL

IronBarcode hat keine Durchsatzbegrenzung – die Verarbeitung erfolgt mit der Geschwindigkeit, die Ihre Infrastruktur zulässt.

Ausgabe 5: Thread-Sicherheit – Entfernung von Instanzpools

BarcodeXpress: Codebasen, die gleichzeitige Verarbeitung unterstützen, verwalten häufig einen Pool von BarcodeXpress-Instanzen oder verwenden ein ThreadLocal<BarcodeXpress>-Muster, um den zustandsbehafteten Leser pro Thread zu isolieren.

Lösung: Die Pooling-Logik vollständig entfernen. IronBarcode's BarcodeReader.Read und BarcodeWriter.CreateBarcode sind zustandslose statische Methoden. Gleichzeitige Aufrufe von beliebig vielen Threads beeinträchtigen sich nicht gegenseitig.

Accusoft BarcodeXpressMigrations-Checkliste

Vor der Migration anfallende Aufgaben

Prüfen Sie den Quellcode, um alle BarcodeXpress-Verwendungen zu identifizieren, bevor Sie Codeänderungen vornehmen:

grep -r "BarcodeXpress" --include="*.cs" .
grep -r "Accusoft" --include="*.cs" .
grep -r "SetSolutionName" --include="*.cs" .
grep -r "SetSolutionKey" --include="*.cs" .
grep -r "SetOEMLicenseKey" --include="*.cs" .
grep -r "reader\.Analyze" --include="*.cs" .
grep -r "writer\.CreateBitmap" --include="*.cs" .
grep -r "\.BarcodeValue" --include="*.cs" .
grep -r "\.BarcodeType" --include="*.cs" .
grep -r "BarcodeType\." --include="*.cs" .
SHELL
  • Notieren Sie sich, welche Barcode-Formate explizit in BarcodeTypes-Zuweisungen aufgeführt sind — diese werden alle in IronBarcode automatisch erkannt
  • Identifizieren Sie jeglichen Code zur Ratenbegrenzungsbehandlung, der entfernt werden kann.
  • Identifizieren Sie alle PDF-Rendering-Bibliotheken, die ausschließlich zur Unterstützung des BarcodeXpress-Lesens hinzugefügt wurden – diese können ebenfalls entfernt werden.
  • Besorgen Sie sich Ihren IronBarcode -Lizenzschlüssel und fügen Sie ihn Ihrem Geheimnismanager hinzu.

Aufgaben der Code-Aktualisierung

  1. Entfernen Sie Accusoft.BarcodeXpress.NetCore aus allen .csproj-Dateien
  2. Fügen Sie IronBarcode in alle .csproj-Dateien ein, die Barcode-Funktionalität benötigen
  3. Ersetzen Sie using Accusoft.BarcodeXpressSdk; mit using IronBarCode; in allen Dateien
  4. Fügen Sie IronBarCode.License.LicenseKey = ... zum Anwendungsstart hinzu
  5. Löschen Sie alle BarcodeXpress-Konstruktoraufrufe und Instanzfelder
  6. Löschen Sie alle SetSolutionName, SetSolutionKey und SetOEMLicenseKey-Aufrufe
  7. Löschen Sie benutzerdefinierte Assertions, die dekodierte Ausgaben auf das Wasserzeichen " UNLIZENZIERT accusoft.com " überprüfen
  8. Ersetzen Sienew Bitmap(path) + reader.Analyze(bitmap)mit BarcodeReader.Read(path)
  9. Entfernen Sie alle reader.BarcodeTypes = ...-Zuweisungen
  10. Ersetzen Sie result.BarcodeValue mit result.Value
  11. Ersetzen Sie result.BarcodeType mit result.Format
  12. Ersetzen Siewriter.CreateBitmap() + bitmap.Save(path)mit BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path)
  13. Entfernen Sie den Code zur Drosselung der Datenrate.
  14. Entfernen Sie gegebenenfalls den Zwischencode für die PDF-Darstellung.
  15. Entfernen Sie Instanzen-Pooling oder ThreadLocal-Muster für BarcodeXpress-Instanzen
  16. Entfernen Sie die Lizenzdateieinbindungen aus den Dockerfile- und docker-compose-Dateien.
  17. Fügen Sie die IRONBARCODE_LICENSE-Umgebungsvariable den Docker- und Containerkonfigurationen hinzu
  18. Kubernetes-Secrets und Pod-Spezifikationen aktualisieren
  19. Aktualisieren Sie die CI/CD-Pipeline-Geheimnisse — entfernen Sie ACCUSOFT_SOLUTION_KEY und ACCUSOFT_RUNTIME_KEY; fügen Sie IRONBARCODE_LICENSE hinzu

Post-Migrationstests

  • Erstellen Sie die Lösung – beheben Sie alle verbleibenden Kompilierungsfehler aufgrund umbenannter Eigenschaften.
  • Führen Sie Unit-Tests für alle Barcode-Lesevorgänge durch.
  • Führen Sie Unit-Tests für alle Barcode-Generierungsvorgänge durch.
  • Gegebenenfalls mit PDF-Eingaben testen
  • Führen Sie einen Stapelverarbeitungstest durch, um zu bestätigen, dass keine Durchsatzdrosselung auftritt.
  • In einer Testumgebung bereitstellen und überprüfen, ob der Lizenzschlüssel korrekt aus der Umgebungsvariablen aufgelöst wird.

Wichtigste Vorteile der Migration zu IronBarcode

Beseitigung der Komplexität der Zwei-Schlüssel-Lizenz: Die SetSolutionName, SetSolutionKey und SetOEMLicenseKey-Einrichtung verschwindet vollständig. Ein Schlüssel deckt jede Umgebung von der Entwicklung bis zur Produktion ab, und der Testmodus liefert vollständige dekodierte Werte (anstatt jeden mit " UNLIZENZIERT accusoft.com " zu stempeln), sodass eine Vorkauf-Benchmarking auf realen Dokumenten möglich ist.

Keine Mindestabnahmemenge für Laufzeitlizenzen: BarcodeXpress benötigt für jede Produktionsbereitstellung mindestens fünf Laufzeitlizenzen. IronBarcode kennt kein Laufzeitlizenzkonzept – der einzelne unbefristete Schlüssel deckt eine beliebige Anzahl von Produktionsinstallationen innerhalb seiner Stufe ab.

Durchsatz ohne Obergrenze: Die Standard Edition beschränkt den Durchsatz auf 40 ppm, und jeglicher Code zur Ratenbegrenzung, der geschrieben wurde, um innerhalb dieser Grenze zu bleiben, kann entfernt werden. IronBarcode verarbeitet Anfragen mit der Geschwindigkeit, die von der zugrunde liegenden Hardware und dem Netzwerk unterstützt wird, ohne softwareseitige Begrenzung in irgendeiner Preisstufe.

Natives PDF-Lesen: BarcodeReader.Read("document.pdf") verarbeitet PDF-Dateien direkt und gibt seitenweise Ergebnisse mit Seitenzahl, Format, Wert und Zuversichtswert zurück. Jede PDF-Rendering-Bibliothek, die ausschließlich zur Unterstützung von BarcodeXpress hinzugefügt wurde, kann entfernt werden, wodurch Abhängigkeiten und Lizenzkosten reduziert werden.

Zustandslose Thread-Sicherheit: BarcodeReader.Read und BarcodeWriter.CreateBarcode sind zustandslose statische Methoden. Instanzen-Pools, ThreadLocal-Muster und pro-Thread-Initialisierungsblöcke können alle entfernt werden. Die gleichzeitige Verarbeitung mit Parallel.ForEach erfordert keine strukturellen Änderungen, außer dass die Threading-Umgehungen entfernt werden.

Vereinfachte Containerbereitstellung: Docker- und Kubernetes-Bereitstellungen verwenden eine einzige Umgebungsvariable zur Lizenzkonfiguration. Die Verteilung von Lizenzdateien, die Infrastruktur des Lizenzservers und die Einbindung von Konfigurationsdateien entfallen vollständig.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.