IRONSOFTWAREHOME
MIT ANDEREN KOMPONENTEN VERGLEICHEN

BarcodeLibvs IronBarcode: Wo der Open-Source-Generator aufhört

Curtis Chau
Curtis Chau
Updated: 26. April 2026

BarcodeLib ist eine langjährige Open-Source .NET-Bibliothek, die die meisten Entwickler irgendwann entdecken können nur Barcodes erzeugen. Ein Teil von ihnen entdeckt auch den SkiaSharp-Versionskonflikt — normalerweise im schlimmsten Moment, wenn sie BarcodeLibgerade zu einem MAUI- oder Blazor-Projekt hinzugefügt haben, das bereits von SkiaSharp abhängig ist und der Build beginnt NU1608-Warnungen zu werfen. Dieser Artikel behandelt beide Probleme. BarcodeLibist eine legitime Bibliothek mit einem klaren Anwendungsfall. Die praktische Frage ist, wo es aufhört.

BarcodeLibverstehen

BarcodeLib ist eine Open-Source-Bibliothek zur Generierung von Barcode-Bildern for .NET, die von Brad Barnhill auf GitHub gepflegt wird. Es ist seit 2007 aktiv und unterstützt etwa 30 1D-Symbologievarianten. Die Apache 2.0-Lizenz erlaubt die kostenlose kommerzielle Nutzung. Für reine lineare Barcodeerzeugung — das Erstellen eines Bildes aus einer Zeichenkette — arbeitet es zuverlässig und hat diesen Zweck über viele Jahre aktiver Nutzung gut erfüllt.

Die API ist instanzbasiert. Sie erstellen ein Barcode-Objekt, setzen Eigenschaften und rufen Encode() mit einem Typkonstanten, einem Datensaiten und Pixelmaßen auf. Das Ergebnis ist ein SKImage (SkiaSharp), das Sie dann nach Bedarf kodieren und speichern oder streamen. Dieser Arbeitsablauf ist zugänglich und für Projekte, bei denen die Anforderung ausschließlich darin besteht, lineare Barcode-Bilder zu drucken — Versandetiketten, Inventaretiketten, Preisschilder im Einzelhandel — ist er ausreichend.

Wichtigste architektonische Merkmale von BarcodeLib:

  • Nur-Generierungs-Bereich: Die Bibliothek verfügt über keine Lese- oder Dekodierungs-API jeglicher Art; seine gesamte öffentliche Oberfläche ist auf die Erzeugung von Bildern aus Datenstrings ausgerichtet
  • Instanzbasierte API: Jeder Vorgang erfordert die Instanziierung eines Barcode-Objekts und die Konfiguration von Etiketten- und Schrifteigenschaften, bevor Sie Encode() aufrufen.
  • Gibt SKImage zurück: Die Ausgabe ist ein SkiaSharp-Bildobjekt, das einen SKEncodedImageFormat-Schritt und einen Stream erfordert, um eine Datei oder ein Byte-Array zu erzeugen.
  • Nur 1D-Symbologien: Unterstützt etwa 30 lineare Formate, darunter Code128, EAN-13, UPC-A und Code39; Das BarcodeStandard.Type-Enum in der aktuellen 3.x-Quelle enthält keinen QR-Code, Data Matrix, PDF417, Aztec oder andere 2D-Einträge.
  • SkiaSharp-Abhängigkeit (v3.x): Die 3.x-Serie ersetzte System.Drawing.Common durch SkiaSharp, um plattformübergreifende Unterstützung zu ermöglichen; Dies birgt das Risiko von Versionskonflikten, wenn andere Pakete im Projekt ebenfalls von SkiaSharp abhängen.
  • Kostenlos, kein Lizenzschlüssel erforderlich: Die Apache 2.0-Lizenz deckt die kommerzielle Nutzung ab; es ist kein Laufzeitschlüssel oder eine Aktivierung erforderlich.

BarcodeLibCore-Generierungsmuster

Der standardmäßige BarcodeLib-Erstellungsvorgang erfordert das Erstellen einer Instanz, die Konfiguration von Eigenschaften und das Aufrufen von Encode() mit Maßen:

using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();
b.IncludeLabel = true;
SKImage img = b.Encode(BarcodeStandard.Type.Code128, "PRODUCT-12345", 300, 100);

using var stream = File.OpenWrite("barcode.png");
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);

Dies ist der vollständige Generierungsablauf. Das Property-Setter-Muster ist das Design: Die Konfiguration erfolgt auf der Instanz vor dem Encode()-Aufruf, und der Rückgabewert ist ein SKImage, das kodiert und in einen Stream geschrieben werden muss.

IronBarcode verstehen

IronBarcode ist eine kommerzielle .NET Barcode-Bibliothek, die sowohl die Generierung als auch das Lesen in einem einzigen Paket abdeckt. Es wird über NuGet installiert, läuft auf .NET Framework 4.6.2 bis .NET 9 und funktioniert unter Windows, Linux, macOS, Docker, Azure und AWS Lambda. Die Bibliothek wird von Iron Software mit einem kommerziellen Supportmodell entwickelt und gepflegt.

Die Generierungs-API ist statisch und fließend – es muss keine Instanz erstellt und keine Eigenschaften vor dem primären Aufruf festgelegt werden. Konfigurationsoptionen verketten sich mit dem Ergebnis von BarcodeWriter.CreateBarcode() oder QRCodeWriter.CreateQrCode(). Ausgabemethoden am Ende der Kette — .SaveAsPng(), .ToPngBinaryData(), .ToAnyImageData() — beseitigen das Zwischen-MemoryStream-Muster, das BarcodeLiberfordert. Das Lesen ist Teil desselben Pakets, es muss keine separate Bibliothek oder ZXing .NET Integration gepflegt werden.

Hauptmerkmale von IronBarcode:

  • Erzeugung und Lesen in einem Paket: BarcodeWriter behandelt die Erzeugung; BarcodeReader behandelt das Lesen; Beide werden im selben NuGet Paket ausgeliefert.
  • Statische Fluent API: Keine Instanziierung erforderlich; Konfigurationsketten nach CreateBarcode() unter Verwendung von Fluent-Methoden
  • Direkte Byte-Array-Ausgabe: .ToPngBinaryData() gibt byte[] ohne einen MemoryStream-Schritt zurück.
  • PDF-Unterstützung auf beiden Seiten: BarcodeReader.Read() akzeptiert PDF-Dateien nativ; Die generierten Ergebnisse können in PDFs eingebettet werden.
  • Keine SkiaSharp-Abhängigkeit: Unabhängig vom SkiaSharp-Versionsgraphen, wodurch NU1608-Konflikte in MAUI und anderen Projekten vermieden werden.
  • Kommerzielle Lizenz mit SLA: Preis: 749–5.999 US-Dollar (unbefristet); beinhaltet kommerziellen Support und garantierte Aktualisierungsintervalle
  • ReadingSpeed-Anpassung: BarcodeReaderOptions ermöglicht den Tausch der Scan-Gründlichkeit gegen Volumenleistung.

Funktionsvergleich

FeatureBarcodeLibIronBarcode
Barcode-GenerierungJa (nur 1D)Ja (1D und 2D)
Barcode-LesungNeinJa
2D symbologies (QR, Data Matrix, PDF417, Aztec)NeinJa
PDF-Barcode-LesenNeinJa
SkiaSharp-Abhängigkeit im DiagrammJa (Version 3.x)Nein
Fluent verkettbare APINeinJa
LizenzApache 2.0 (kostenlos)749–5.999 $ (dauerhaft)

Detaillierter Funktionsvergleich

FeatureBarcodeLibIronBarcode
Generation
Code-128-GenerierungJaJa
EAN-13 / UPC-A GenerationJaJa
QR-Code-GenerierungNeinJa (mit Logo-Einbettung)
Data Matrix / PDF417 / AztecNeinJa
1D-Symbologie-Abdeckung~30 Varianten30+ Varianten
API für flüssige, verkettbare GenerierungNeinJa
Direkte byte[]-AusgabeManual (Stream-Codeierung).ToPngBinaryData()
PDF-GenerierungsausgabeNeinJa
Lektüre
Barcode aus Bild lesenNeinJa (BarcodeReader.Read())
Barcode-Lesen aus PDFNeinJa (nativ, keine zusätzliche Bibliothek)
Mehrfach-Barcode-ErkennungNeinJa (ExpectMultipleBarcodes)
LesegeschwindigkeitseinstellungNicht anwendbarJa (ReadingSpeed-Enum)
Plattform
WindowsJaJa
Linux / macOSPartiell (SkiaSharp-abhängig)Voll
Docker / ContainerKonfiguration erforderlichJa
MAUI-ProjektkompatibilitätKonfliktrisiko (NU1608)Kein Konflikt
.NET Framework 4.6.2+JaJa
.NET 6-9Ja (SkiaSharp 3.x erforderlich)Ja
Lizenzierung
Open Source / kostenlosJa (Apache 2.0)Nein
Kommerzieller Support / SLANeinJa
Lizenzschlüssel erforderlichNeinJa
PreisgestaltungKostenlos749–5.999 $ (dauerhaft)

Barcode-Generierungs-API

Die Generierungs-APIs repräsentieren unterschiedliche Designphilosophien: BarcodeLibverwendet eine veränderbare Instanzkonfiguration, während IronBarcode eine fließende Kette auf einem statischen Einstiegspunkt verwendet.

BarcodeLib-Ansatz

BarcodeLib erfordert das Erstellen einer Instanz und das Setzen von Eigenschaften, bevor Encode() mit Dimensionen aufgerufen wird. Die Ausgabe ist ein SKImage:

using BarcodeStandard;
using SkiaSharp;

public byte[] GenerateCode128(string data)
{
    var b = new Barcode();
    b.IncludeLabel = true;
    SKImage img = b.Encode(BarcodeStandard.Type.Code128, data, 300, 100);

    using var ms = new MemoryStream();
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
    return ms.ToArray();
}

Der SKImage-Rückgabetyp bedeutet, dass die Byte-Array-Ausgabe einen SKEncodedImageFormat-Kodierungsaufruf und einen MemoryStream erfordert. Die IncludeLabel-Eigenschaft ist ein boolescher Schalter — BarcodeLibrendert die kodierte Datenzeichenfolge als sichtbares Etikett unter den Balken.

IronBarcode Ansatz

Die Barcode-Generierung von IronBarcode ist vollständig statisch. Konfigurationsketten nach CreateBarcode(), und Ausgabemethoden beenden die Kette direkt:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateCode128(string data)
{
    return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(300, 100)
        .AddBarcodeValueTextBelowBarcode()
        .ToPngBinaryData();
}

.ToPngBinaryData() gibt das Byte-Array direkt zurück — kein Zwischen-Image- oder MemoryStream-Objekt. .AddBarcodeValueTextBelowBarcode() rendert die kodierte Datenzeichenfolge als Etikett unter den Balken. Für fortgeschrittene Generierungsszenarien siehe die IronBarcode Dokumentation zur Barcode-Generierung .

Barcode-Lesefähigkeit

Das Lesen stellt die bedeutendste funktionale Grenze zwischen diesen beiden Bibliotheken dar. BarcodeLibbesitzt keine Lesefunktion; IronBarcode beinhaltet eine vollständige Lese-Engine im selben Paket.

BarcodeLib-Ansatz

BarcodeLib besitzt keine Lese-API. Es gibt keine Decode()-, Scan()-, oder ReadBarcode()-Methode. Lesen war nie Teil des Designs der Bibliothek. Jeder Versuch, eine Dekodierungsmethode aufzurufen, führt zu einem Kompilierungsfehler:

using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();

// There is no Decode, Scan, or Read method on Barcode.
// b.Decode("barcode.png");      // does not exist
// b.Scan("barcode.png");        // does not exist
// b.ReadBarcode("barcode.png"); // does not exist

// The only public operation is generation:
SKImage img = b.Encode(BarcodeStandard.Type.Code128, "PRODUCT-12345", 300, 100);

Teams, die neben BarcodeLibsowohl die Generierung als auch das Lesen benötigen, müssen eine zweite Bibliothek hinzufügen – typischerweise ZXing .NET –, was einen eigenen Aufwand für die Abhängigkeitsverwaltung und eine zweite zu pflegende API-Oberfläche mit sich bringt.

IronBarcode Ansatz

BarcodeReader.Read() akzeptiert Bilddateien, PDF-Dateien, Streams und System.Drawing.Bitmap-Objekte. Zum Lesen einer PDF-Datei ist keine zusätzliche Bibliothek erforderlich:

using IronBarCode;

// Read from an image
var results = BarcodeReader.Read("barcode.png");
Console.WriteLine(results.First().Value);  // "PRODUCT-12345"

// Read all barcodes from a PDF — no separate PDF library needed
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

// Tune reading for speed vs. thoroughness
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-scan.png", options);

Das ReadingSpeed-Enum ermöglicht die Feinabstimmung der Scanleistung für Szenarien mit hohem Volumen. Hinweise zur Konfiguration des Lesevorgangs finden Sie in der IronBarcode -Lesedokumentation .

SkiaSharp Abhängigkeitskonflikt

Die in BarcodeLib3.x eingeführte SkiaSharp-Abhängigkeit erzeugt eine Konfliktklasse, die in IronBarcode nicht existiert.

BarcodeLib-Ansatz

Ab BarcodeLib3.x führte die Bibliothek SkiaSharp als Grafik-Backend ein, um System.Drawing.Common zu ersetzen, das nach .NET 6 nur noch unter Windowsverwendet werden konnte. BarcodeLib3.1.5 erklärt SkiaSharp >= 2.88.8. Wenn ein Projekt bereits SkiaSharp über eine andere Abhängigkeit verwendet — was in MAUI-Projekten mit SkiaSharp.Views.Maui und Microsoft.Maui.Graphics häufig vorkommt, die zu SkiaSharp 3.x tendieren — können sich die aufgelösten Versionen nicht vereinbaren. Das Ergebnis ist mindestens eine NU1608-Warnung und schlimmstenfalls ein Assembly-Bindungsfehler zur Laufzeit:

warning NU1608: Detected package version outside of dependency constraint:
BarcodeLib 3.1.5 requires SkiaSharp (>= 2.88.8) but
version SkiaSharp 3.116.1 was resolved.
Text

Eine Lösung zu erzwingen, indem man explizite Paketreferenzen verwendet, ist ein Weg, aber es gibt keine Garantie für Laufzeitkompatibilität:

<ItemGroup>
  <PackageReference Include="BarcodeLib" Version="3.1.5" />
  <PackageReference Include="SkiaSharp" Version="3.116.1" />
  <PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.116.1" />
</ItemGroup>
XML

Selbst mit expliziten Überschreibungen hängt die Kompatibilität davon ab, dass die internen API-Aufrufe von BarcodeLibmit dem übereinstimmen, was die aufgelöste SkiaSharp-Version bereitstellt. Als von der Community gepflegtes Projekt hat BarcodeLibkeinen kommerziellen Support-Vertrag, der mit seinem Release-Rhythmus verbunden ist.

IronBarcode Ansatz

IronBarcode teilt den SkiaSharp-Abhängigkeitsgraphen nicht mit dem Anwendungscode. Es gibt keine Versionsverhandlungen, die verwaltet werden müssen, keine NU1608-Fehlerdiagnose und kein Laufzeit-Assembly-Bindungsrisiko im Zusammenhang mit der SkiaSharp-Versionsauflösung. MAUI-Projekte, Blazor -Projekte und alle anderen Anwendungen, die von SkiaSharp abhängen, können IronBarcode ohne Versionskonflikte installieren. Für MAUI-spezifische Integrationsmuster siehe die IronBarcode MAUI-Dokumentation .

API-Mapping-Referenz

BarcodeLibIronBarcode
new Barcode()Statische API – keine Instanz erforderlich
b.Encode(BarcodeStandard.Type.Code128, "data", 300, 100)BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).ResizeTo(300, 100)
b.IncludeLabel = true.AddBarcodeValueTextBelowBarcode()
Gibt SKImage zurück.SaveAsPng(path) / .ToPngBinaryData()
BarcodeStandard.Type.Code128BarcodeEncoding.Code128
BarcodeStandard.Type.Code39BarcodeEncoding.Code39
BarcodeStandard.Type.Ean13BarcodeEncoding.EAN13
BarcodeStandard.Type.UpcABarcodeEncoding.UPCA
Nicht unterstützt (kein 2D in BarcodeLib)BarcodeEncoding.QRCode (auch QRCodeWriter)
Keine Lese-APIBarcodeReader.Read(path)
SkiaSharp in AbhängigkeitsdiagrammKeine SkiaSharp-Abhängigkeit

Wenn Teams einen Wechsel von BarcodeLibzu IronBarcode erwägen

Leseanforderung erscheint

Ein System, das seit Monaten Versandetiketten generiert, erhält eine neue Anforderung: Die Anwendung muss nun auch von Lieferanten zurückgesendete Etiketten verarbeiten können. Die Lagerintegration muss Barcodes aus eingehenden Lieferscheinen auslesen können. Ein Dokumentenmanagementsystem muss Barcodes auf gescannten PDFs indexieren können. BarcodeLibkann keine dieser Anforderungen erfüllen – die Lese-API existiert nicht. Das Team prüft die Möglichkeit, ZXing .NET parallel zu BarcodeLibzu installieren, wägt den Wartungsaufwand für zwei Bibliotheken und die zwei separaten Abhängigkeitsgraphen ab und entscheidet sich schließlich für eine Bibliothek, die sowohl die Generierung als auch das Lesen mit einer einzigen NuGet Installation ermöglicht.

SkiaSharp-Konflikt in einem MAUI-Projekt

Ein Team fügt BarcodeLibzu einer bestehenden MAUI-Anwendung hinzu und stößt während der Wiederherstellung sofort auf NU1608-Warnungen. Sie untersuchen das Versionsmismatch zwischen dem erwarteten SkiaSharp-Bereich von BarcodeLibund der von MAUI benötigten Version, fügen explizite <PackageReference>-Überschreibungen hinzu, um eine Lösung zu erzwingen, und bringen den Build zum Bestehen. Dann kommt es auf dem Gerät zu einem Laufzeitabsturz, wenn die nativen Binärdateien von SkiaSharp die falsche Version laden. Zur Behebung des Problems ist eine genauere Untersuchung des Assembly-Bindungsprotokolls erforderlich. Durch den Wechsel zu IronBarcode wird der Konflikt an der Wurzel beseitigt – nicht etwa durch das Finden einer kompatiblen SkiaSharp-Version, sondern durch die vollständige Eliminierung der gemeinsamen Abhängigkeit.

PDF-Barcode-Verarbeitung erforderlich

Anwendungen, die PDF-Dokumente mit eingebetteten Barcodes generieren – Rechnungen, Arbeitsaufträge, Versandmanifeste – müssen diese Barcodes manchmal bei der Weiterverarbeitung wieder einlesen. BarcodeLibgeneriert Barcode-Bilder, bietet aber auf keiner Seite PDF-Unterstützung. Das Einlesen von Barcodes aus einer PDF-Datei mit BarcodeLiberfordert, dass die PDF-Datei zunächst mithilfe einer separaten PDF-Bibliothek in Bilder umgewandelt wird, bevor diese Bilder an eine separate Lesebibliothek übergeben werden können. IronBarcode behandelt die gesamte Kette nativ: BarcodeReader.Read("file.pdf") durchläuft jede Seite und gibt alle erkannten Barcodes ohne einen Zwischenschritt der Darstellung zurück.

QR-Code oder andere 2D-Symbologie-Anforderung erscheint

Projekte, die ursprünglich nur lineare Barcodes benötigten, entwickeln sich oft dahingehend, dass sie QR-Code, Data Matrix, PDF417 oder Aztec-Ausgabe benötigen. BarcodeLibgeneriert keine 2D-Symbologie in seiner 3.x-Serie — das BarcodeStandard.Type-Enum enthält keinen QR-Code oder andere 2D-Einträge — daher bedeutet jede 2D-Anforderung entweder die Hinzufügung einer zweiten Bibliothek oder den vollständigen Ersatz von BarcodeLib. IronBarcode's QRCodeWriter und BarcodeWriter decken QR-Code (mit Logo-Einbettung, Farbsteuerung und Fehlerkorrektur-Anpassung), Data Matrix, PDF417 und Aztec über die gleiche Fluent-API ab. Teams, deren Symbologie-Anforderungen in 2D übergehen, stellen fest, dass die Lücke die Migrationsentscheidung antreibt.

Gemeinsame Überlegungen zur Migration

Instanz-API zu statischer Fluent-API

BarcodeLib-Code verwendet ein veränderliches Objektmuster: erstellen Sie eine Barcode-Instanz, setzen Sie Eigenschaften, rufen Sie Encode() auf. IronBarcode verwendet ein statisches Fluent-Muster: Rufen Sie BarcodeWriter.CreateBarcode() auf, verketten Sie Konfigurationsmethoden, beenden Sie mit einer Ausgabemethode. Vorhandener Code, der eine Barcode-Instanz als Feld speichert oder zwischen Methoden übergibt, muss neu strukturiert werden. Die typische Änderung besteht darin, den Property-Setter-Block durch eine Methodenkette zu ersetzen:

// The property setters on b become chained methods
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .AddBarcodeValueTextBelowBarcode()
    .SaveAsPng(outputPath);

SKImage zu direkter Ausgabe

BarcodeLib 3.x gibt SKImage zurück, das SKEncodedImageFormat und einen Stream benötigt, um Bytes zu erzeugen. Jeder Code, der auf SKImage typisiert ist oder durch image.Encode(...).SaveTo(stream) geht, muss aktualisiert werden. Die Fluent-Kette von IronBarcode endet direkt mit dem gewünschten Ausgabeformat — .SaveAsPng(), .ToPngBinaryData(), .ToAnyImageData() — und entfernt die Notwendigkeit für das Zwischenabbildobjekt und den Kodierungs-zu-Stream-Schritt.

Type Enum to BarcodeEncoding Enum

BarcodeLib 3.x verwendet das BarcodeStandard.Type-Enum mit PascalCase-Werten wie BarcodeStandard.Type.Code128. IronBarcode verwendet das BarcodeEncoding-Enum mit Werten wie BarcodeEncoding.Code128. Die 1D-Werte werden direkt zugeordnet: Code128Code128, Ean13EAN13, UpcAUPCA, Code39Code39. Ein grep für BarcodeStandard.Type. über .cs-Dateien identifiziert alle Vorkommen, die aktualisiert werden müssen.

SkiaSharp Referenzbereinigung

Projekte, die explizite <PackageReference Include="SkiaSharp">-Einträge nur hinzugefügt haben, um BarcodeLibs NU1608-Warnungen zu lösen, können diese Überschreibungen nach dem Wechsel zu IronBarcode entfernen. Der dotnet list package --include-transitive-Befehl bestätigt, ob SkiaSharp immer noch von anderen Paketen im Projekt benötigt wird, bevor es entfernt wird.

Zusätzliche IronBarcode Funktionen

Über die direkte Generierung und den Lesevergleich hinaus bietet IronBarcode Funktionen, die BarcodeLibnicht abdeckt:

  • QR-Code-Logo-Einbettung: QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") bettet ein Markenlogo in die Mitte eines QR-Codes mit automatischer Anpassung der Fehlerkorrektur ein.
  • PDF-Barcode-Extraktion: BarcodeReader.Read("file.pdf") liest Barcodes von jeder Seite eines PDF-Dokuments ohne eine separate PDF-Darstellungsbibliothek.
  • Mehrfach-Barcodes-Erkennung: BarcodeReaderOptions.ExpectMultipleBarcodes = true erkennt und gibt alle Barcodes, die in einem einzelnen Bild vorhanden sind, zurück.
  • Konfiguration der Lesegeschwindigkeit: ReadingSpeed.Faster, ReadingSpeed.Balanced und ReadingSpeed.ExtremeDetail passen die Scan-Engine für Durchsatz vs. Genauigkeit an.
  • Gestylte QR-Code-Erstellung: Farbe, Finder-Pattern-Stil und Fehlerkorrekturstufe sind durch Verkettungsmethoden auf QRCodeWriter konfigurierbar.
  • Stream- und Bitmap-Eingabe für das Lesen: BarcodeReader.Read() akzeptiert Dateipfade, Streams, System.Drawing.Bitmap und AnyBitmap-Eingaben.

.NET-Kompatibilität und Zukunftsfähigkeit

IronBarcode unterstützt .NET Framework 4.6.2 bis .NET 9 und hält einen regelmäßigen Veröffentlichungszyklus ein, der mit dem .NET Veröffentlichungsplan von Microsoft übereinstimmt. Da die Verbreitung von .NET 10 bis 2026 zunimmt, gewährleistet die aktive Weiterentwicklung von IronBarcode die Vorwärtskompatibilität, ohne dass Projektänderungen erforderlich sind. Die Bibliothek läuft ohne Änderungen unter Windows, Linux, macOS, Docker, Azure und AWS Lambda. BarcodeLibpflegt außerdem eine aktive Community-Entwicklung, wobei die plattformübergreifende Unterstützung in der 3.x-Serie von der in den obigen Vergleichsabschnitten erläuterten SkiaSharp-Versionskompatibilität abhängt. Für Projekte, die auf modernes .NET unter Linux oder in Containern abzielen, vermeidet die abhängigkeitsfreie, plattformübergreifende Architektur von IronBarcode die Versionsverhandlung, die das SkiaSharp-Backend von BarcodeLibmit sich bringt.

Abschluss

BarcodeLib und IronBarcode repräsentieren unterschiedliche Lösungsansätze für die Barcode-Verarbeitung in .NET. BarcodeLibist eine fokussierte, kostenlose Bibliothek, die ausschließlich für die Generierung von Barcodes verwendet wird und ihren definierten Anwendungsfall seit fast zwei Jahrzehnten zuverlässig erfüllt. IronBarcode ist eine kommerzielle Bibliothek, die sowohl die Generierung als auch das Lesen abdeckt, mit einer statischen Fluent-API und ohne SkiaSharp-Abhängigkeit. Der Unterschied liegt nicht in der Qualität innerhalb des gemeinsamen Geltungsbereichs – er liegt im Geltungsbereich selbst.

BarcodeLib bleibt eine geeignete Wahl für Projekte mit stabilen, ausschließlich linearer Generation auf Windowsoder in Umgebungen, wo die SkiaSharp-Versionslandschaft kontrolliert wird. Seine Apache 2.0-Lizenz, der Null-Kostenpreis und die unkomplizierte API machen es zu einer praktischen Lösung für Versandetikettensysteme, Inventaretikettengeneratoren und ähnliche Anwendungen, die niemals Barcodes scannen oder 2D-Symbologien erzeugen müssen.

IronBarcode wird zur praktischeren Wahl, wenn die Anforderungen über die lineare Bildgeneration hinausgehen: wenn eine Lese-Fähigkeit benötigt wird, wenn das Projekt eine MAUI- oder plattformübergreifende Anwendung ist, wo SkiaSharp-Versionskonflikte wahrscheinlich sind, wenn die PDF-Barcode-Verarbeitung auf der Roadmap steht oder wenn irgendeine 2D-Symbologie (QR-Code, Data Matrix, PDF417, Aztec) erforderlich ist. Die Kosten für die kommerzielle Lizenz stellen die Frage der Schwelle dar — für Teams, deren Anforderungen mit dem übereinstimmen, was IronBarcode gegenüber BarcodeLibbietet, sind die Ein-Paket-Lösung und der kommerzielle Support der Werttausch.

Die ehrliche Einschätzung ist, dass die meisten Teams nicht von Anfang an mit IronBarcode arbeiten. Sie beginnen mit BarcodeLib, weil es kostenlos und ausreichend ist. Sie wechseln zu IronBarcode , wenn ihre Anforderungen über den reinen Generierungsumfang von BarcodeLibhinausgehen. Die Migration ist gut dokumentiert und die Änderungen an der API-Oberfläche sind vorhersehbar. Zu verstehen, wo BarcodeLibaufhört – und insbesondere, dass es bei der Generierung aufhört – ist die praktische Information, die benötigt wird, um diese Timing-Entscheidung richtig zu treffen.

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.