Barcode4.NET vs IronBarcode: C# Barcode Bibliothek Vergleich
Barcode4NET wurde ohne offizielle Ankündigung eingestellt. Der Verkauf neuer Lizenzen über ComponentSource wurde eingestellt, es wurde kein NuGet Paket veröffentlicht, und die Bibliothek ist ausschließlich auf das .NET Frameworkausgerichtet. Für Teams, die eine Abhängigkeit von Barcode4NETübernommen haben, vergleicht dieser Artikel das Angebot dieser Bibliothek mit dem, was IronBarcode heute bietet – wobei die Plattformreichweite, das API-Design, die Barcode-Lesefähigkeit und die Lizenzrealität, die einen direkten Vergleich etwas ungewöhnlich macht, behandelt werden.
Barcode4NETverstehen
Barcode4NET war eine kommerzielle Barcode-Generierungsbibliothek, die über ComponentSource und ähnliche Software-Wiederverkäufer vertrieben wurde. Es wurde für Windows-basierte .NET FrameworkAnwendungen – vor allem Windows Forms und ASP.NET Web Forms – entwickelt und lieferte saubere Bitmap-Ausgabe für die wichtigsten 1D-Symbologien seiner Zeit.
Die Bibliothek war nie als NuGet Paket verfügbar. Es wurde als DLL verteilt, die die Entwickler in die Quellcodeverwaltung eincheckten oder in einem gemeinsamen Artefaktspeicherort ablegten. Für jedes Projekt, das es verwendete, war ein manuelles <Reference> Element in der .csproj Datei erforderlich, das auf die DLL auf der Festplatte verwies. Dies war gängige Praxis, als Barcode4NETnoch aktiv war, führt aber in modernen CI/CD-Workflows zu erheblichen Problemen.
Wichtigste architektonische Merkmale von Barcode4NET:
- Property-Setter-API: Entwickler erstellten ein
Barcode-Objekt, wiesen ihmSymbology,Data,WidthundHeightals Eigenschaften zu und riefen anschließendGenerateBarcode()auf, um einSystem.Drawing.Bitmap-Objekt zu erhalten. - Fokus auf 1D-Symbolik: Unterstützt Code128, Code39, EAN-13 und UPC-A; Die Unterstützung für QR-Codes war versionsabhängig eingeschränkt.
- Nur für die Generation: Das Produkt verfügte nie über eine Barcode-Lese- oder Scanfunktion.
- Nur Windows und .NET Framework: Keine Unterstützung für .NET Core, .NET 5+, Linux, macOS, Dockeroder Cloud-Runtimes.
- Keine NuGet Distribution: Manuelle DLL-Referenzierung in jeder Projektdatei und Build-Pipeline erforderlich.
- Produktlebenszyklusende: Keine neuen Lizenzen mehr verfügbar, keine Sicherheitsupdates, keine Fehlerbehebungen und kein Migrationspfad seitens des Anbieters.
Barcode4NET-Generierungs-API
Der gesamte Generierungsworkflow in Barcode4NETverwendete ein Property-Setter-Muster:
// Barcode4NET— manual DLL, .NET Frameworkonly
//NeinNuGet-Paket— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
// Barcode4NET— manual DLL, .NET Frameworkonly
//NeinNuGet-Paket— requires ThirdParty/Barcode4NET/Barcode4NET.dll in source control
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = "ITEM-12345"
barcode.Width = 300
barcode.Height = 100
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
Dies stellt den gesamten Funktionsumfang der Barcode4NET-API dar. Die Bibliothek bot keine flüssige Verkettung, keine Lesefunktion, keine PDF-Ausgabe und keine erweiterten QR-Code-Optionen wie Logoeinbettung oder Fehlerkorrektur.
IronBarcode verstehen
IronBarcode ist eine kommerzielle .NET Barcode-Bibliothek von Iron Software , die sowohl die Barcode-Generierung als auch das Barcode-Lesen in einem einzigen Paket abdeckt. Es wird ausschließlich über NuGet vertrieben, zielt auf .NET Framework4.6.2 bis .NET 9 ab und läuft unter Windows, Linux, macOS, Docker, Azure und AWS Lambda.
Die Bibliothek basiert auf einer flüssigen statischen API. Die Generierung verwendet BarcodeWriter.CreateBarcode() mit einer Datenzeichenfolge und einem Kodierungstyp, gefolgt von verkettbaren Optionen für Größe, Farbe und Format. Zum Lesen wird BarcodeReader.Read() verwendet, das Bilddateipfade, Datenströme und PDF-Dokumente akzeptiert, ohne dass eine separate PDF-Bibliothek erforderlich ist.
Hauptmerkmale von IronBarcode:
- Fluent Static Generierungs-API:
BarcodeWriter.CreateBarcode()Ketten.ResizeTo(),.AddAnnotationTextAboveBarcode()und Speichermethoden in einem einzigen Ausdruck - Barcode-Lesung:
BarcodeReader.Read()dekodiert Barcodes nativ aus Bildern und PDFs - Umfassende Formatunterstützung: Code128, Code39, EAN-13, UPC-A, QR-Code, Data Matrix, PDF417, Aztec und mehr
- QR-Code-Spezialisierung:
QRCodeWriter.CreateQrCode()bietet QR-spezifische Optionen, einschließlich Logoeinbettung und Fehlerkorrekturstufe - NuGet Distribution: Standardinstallation
dotnet add package IronBarcode;dotnet restorekümmert sich um alle Abhängigkeiten - Plattformübergreifend: Läuft unter .NET 5, 6, 7, 8 und 9 auf Windows, Linux und macOS, einschließlich Docker-Containern und serverlosen Cloud-Laufzeitumgebungen
- Aktives kommerzielles Produkt: Regelmäßige Updates, Sicherheitspatches, Kompatibilitätsupdates für .NET Versionen und käufliche Lizenzen zu festgelegten Preisen
Funktionsvergleich
Die folgende Tabelle hebt die wichtigsten Unterschiede zwischen Barcode4NETund IronBarcode hervor:
| Feature | Barcode4NET | IronBarcode |
|---|---|---|
| NuGet -Paket | Nein – nur manuelle DLL-Datei | Ja (IronBarcode) |
| Barcode-Generierung | Ja | Ja |
| Barcode-Lesung | Nein | Ja |
| Plattformübergreifende Unterstützung | Nein – nur Windows | Ja – Windows, Linux, macOS |
| Aktive Instandhaltung | Nein (Lebensende) | Ja |
| Neue Lizenzen verfügbar | Nein | Ja |
Detaillierter Funktionsvergleich
| Feature | Barcode4NET | IronBarcode |
|---|---|---|
| Generation | ||
| Code-128-Generierung | Ja | Ja |
| Code39-Generierung | Ja | Ja |
| EAN-13 / UPC-A Generation | Ja | Ja |
| QR-Code-Generierung | Beschränkt | Ja — QRCodeWriter.CreateQrCode() |
| QR-Code mit Logo | Nein | Ja — .AddBrandLogo() |
| Data Matrix / PDF417 / Aztec | Nein | Ja |
| Fluent verkettbare API | Nein | Ja |
| Lektüre | ||
| Barcode-Lesen aus Bildern | Nein | Ja — BarcodeReader.Read() |
| Barcode-Lesen aus PDFs | Nein | Ja – nativ, keine zusätzliche Bibliothek |
| Mehrfach-Barcode-Erkennung | Nein | Ja — ExpectMultipleBarcodes |
| Konfiguration der Lesegeschwindigkeit | Nein | Ja — ReadingSpeed enum |
| Plattform | ||
| .NET Framework | Ja | Ja (.NET Framework 4.6.2+) |
| .NET 5 / 6 / 7 / 8 / 9 | Nein | Ja |
| Linux / macOS | Nein | Ja |
| Docker | Nein | Ja |
| Azure / AWS Lambda | Nein | Ja |
| Verteilung | ||
| NuGet-Paket | Nein | Ja |
dotnet restore kompatibel |
Nein | Ja |
| CI/CD-Integration | Manuelle DLL-Schritte | Standardwiederherstellung |
| Wartung | ||
| Aktive Entwicklung | Nein (Lebensende) | Ja |
| Sicherheitspatches | Nein | Ja |
| Fehlerbehebungen | Nein | Ja |
| Neue Lizenzen | Nein | Ja – Lite 749 $, Plus 1.499 $, Professional 2.999 $, Unlimited 5.999 $ |
API-Generierung
Die Generierungs-API stellt den direktesten Vergleichspunkt zwischen diesen beiden Bibliotheken dar, da die Generierung die einzige Funktion war, die Barcode4NETbot.
Barcode4NET-Ansatz
Barcode4NET verwendete ein imperatives Eigenschaftssetzer-Muster. Die Entwickler instanziierten ein Barcode-Objekt, wiesen ihm individuelle Eigenschaften zu und riefen GenerateBarcode() auf, um ein System.Drawing.Bitmap-Objekt zu erhalten:
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public Bitmap GenerateLabel(string sku)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
return barcode.GenerateBarcode();
}
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Public Function GenerateLabel(sku As String) As Bitmap
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = sku
barcode.Width = 400
barcode.Height = 120
Return barcode.GenerateBarcode()
End Function
Der Rückgabetyp — System.Drawing.Bitmap — bedeutete, dass der aufrufende Code für das Speichern, Anzeigen oder Streamen des Bildes verantwortlich war. Dies war für WinForms-Anwendungen geeignet, bei denen ein Bitmap direkt einem PictureBox zugewiesen werden konnte, erforderte jedoch zusätzliche Konvertierungsschritte für jedes andere Ausgabeziel.
IronBarcode Ansatz
IronBarcode verwendet eine flüssige statische API. Ein einzelner Methodenaufruf initiiert die Generierung, und verkettbare Methoden konfigurieren das Ergebnis vor einer abschließenden Speicher- oder Konvertierungsmethode:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public byte[] GenerateLabel(string sku)
{
return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
}
Imports IronBarCode
Public Function GenerateLabel(sku As String) As Byte()
Return BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.ToPngBinaryData()
End Function
Der Aufzählungstyp BarcodeEncoding entspricht direkt dem Aufzählungstyp Symbology. .ResizeTo() ersetzt die Eigenschaftszuweisungen Width und Height. Terminalmethoden — .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() — ersetzen die separaten Aufrufe GenerateBarcode() und bitmap-save. Für komplexere Generierungsszenarien siehe die IronBarcode Dokumentation zur Barcode-Generierung .
Barcode-Lesefähigkeit
Die Lesefähigkeit ist der größte Unterschied zwischen diesen beiden Bibliotheken. Barcode4NETbot in keiner Version jemals das Lesen von Barcodes an. IronBarcode beinhaltet die vollständige Lesefunktion im selben Paket wie die Generierung.
Barcode4NET-Ansatz
Barcode4NET besaß keine Lese-API. Teams, die Barcodes aus Bildern oder gescannten Dokumenten dekodieren mussten, mussten eine komplett separate Bibliothek integrieren – entweder ZXing .NET, eine Open-Source-Alternative, oder ein kommerzielles Scanner-SDK. Das Ergebnis waren zwei separate Abhängigkeitsketten: Barcode4NETzur Generierung und eine zweite Bibliothek zum Lesen.
IronBarcode Ansatz
IronBarcode stellt BarcodeReader.Read() als statische Methode bereit, die Bilddateipfade, Stream-Objekte und PDF-Dokumente akzeptiert:
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
using IronBarCode;
// Read from an image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.Format}");
}
// Read all barcodes from a multi-page PDF — no extra PDF library required
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Imports IronBarCode
' Read from an image file
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Format: {result.Format}")
Next
' Read all barcodes from a multi-page PDF — no extra PDF library required
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
Für Szenarien mit hohem Bildaufkommen oder Bildrauschen bietet die Klasse BarcodeReaderOptions Kontrolle über die Lesegeschwindigkeit und die Erkennung mehrerer Barcodes. Informationen zu den Konfigurationsoptionen finden Sie in der Dokumentation zum Barcode-Lesen .
Plattform- und Bereitstellungsabdeckung
Die Plattformunterstützung stellt den entscheidendsten Unterschied für Teams dar, die .NET Modernisierungsprojekte durchführen.
Barcode4NET-Ansatz
Barcode4NET wurde gegen .NET Framework-Assemblys kompiliert. Es lief unter Windows, in .NET FrameworkAnwendungen, in IIS-gehosteten Web Forms- und Windows Forms-Projekten. Es gab keine Linux-Versionen, keine .NET Core Versionen und keine Unterstützung für Cloud-Laufzeitumgebungen. Als Microsoft .NET Core einführte und später die Plattform als .NET 5+ vereinheitlichte, gab es für Barcode4NETkeine entsprechenden Aktualisierungen. Projekte, die auf net5.0 oder später abzielen, können die Bibliothek überhaupt nicht referenzieren.
Das DLL-Verteilungsmodell verschärfte die Plattformbeschränkung zusätzlich. Jede Build-Umgebung – Entwickler-Workstation, Build-Agent, Docker-Container – erforderte, dass die DLL unter einem bekannten Pfad vorhanden war. Bei containerbasierten Bereitstellungen bedeutete dies entweder, die DLL in ein benutzerdefiniertes Basis-Image einzubetten oder sie während des Container-Builds zu kopieren, was beides nicht mit Standard-Workflows kompatibel ist.
IronBarcode Ansatz
IronBarcode unterstützt mehrere Frameworks über ein einziges NuGet Paket: .NET Framework4.6.2 bis .NET 9 sowie alle aktuellen .NET Versionen unter Windows, Linux und macOS. Die Bereitstellung in Docker-Containern verwendet die standardmäßigen .NET -Laufzeitabbilder ohne Modifikation. Azure Functions, AWS Lambda und andere serverlose Laufzeitumgebungen werden über dasselbe NuGet Paket unterstützt. Der Befehl dotnet restore löst alle Abhängigkeiten ohne manuelle DLL-Verwaltung auf.
Lizenzarchitektur und Anbieterstatus
Die Lizenzsituation für Barcode4NETist kein Wettbewerbsfaktor – sie ist eine praktische Einschränkung, die jede Entscheidung darüber beeinflusst, ob die Bibliothek weiterhin genutzt werden soll.
Barcode4NET-Ansatz
Barcode4NET wird nicht mehr weiterentwickelt. Neue Lizenzen sind weder über ComponentSource noch über andere Kanäle erhältlich. Wenn ein Entwickler einem Team beitritt, das Barcode4NETverwendet, gibt es keinen Mechanismus, um einen Lizenzplatz für ihn zu erwerben. Je nach Ausgestaltung der bestehenden Lizenzen ist es einem neuen Entwickler unter Umständen nicht rechtlich möglich, Barcode-bezogenen Code während der Entwicklungsphase auszuführen oder zu debuggen. Es gibt kein Problemverfolgungssystem, keinen Supportkanal und keinen Anbieter, an den man sich bei Mängeln wenden könnte. Sicherheitslücken, die nach der letzten Veröffentlichung entdeckt wurden, bleiben dauerhaft ungelöst.
IronBarcode Ansatz
IronBarcode ist ein aktiv gepflegtes kommerzielles Produkt mit unbefristeter Lizenz. Die Preise beginnen bei 749 US-Dollar für eine Lite Lizenz für einen einzelnen Entwickler. Darüber hinaus sind die Stufen Plus (1.499 US-Dollar, 3 Entwickler), Professional (2.999 US-Dollar, 10 Entwickler) und Unlimited (5.999 US-Dollar) erhältlich. Alle Pakete beinhalten eine lizenzgebührenfreie Bereitstellung. Sicherheitspatches, Bugfixes und Kompatibilitätsupdates für die .NET Version werden in regelmäßigen Abständen veröffentlicht. Eine 30-tägige kostenlose Testversion steht ohne Lizenzschlüssel zur Verfügung.
API-Mapping-Referenz
| Barcode4NET | IronBarcode |
|---|---|
new Barcode4NET.Barcode() |
BarcodeWriter.CreateBarcode(data, encoding) |
barcode.Symbology = Symbology.Code128 |
BarcodeEncoding.Code128 (Parameter zu CreateBarcode) |
barcode.Data = "ITEM-12345" |
Erster Parameter von CreateBarcode() |
barCode.Width = 300; barcode.Height = 100|.ResizeTo(300, 100)` |
|
barcode.GenerateBarcode() gibt Bitmap zurück |
.SaveAsPng(path) / .ToPngBinaryData() |
Symbology.QRCode |
BarcodeEncoding.QRCode |
Symbology.Code39 |
BarcodeEncoding.Code39 |
Symbology.EAN13 |
BarcodeEncoding.EAN13 |
Symbology.UPCA |
BarcodeEncoding.UPCA |
Manuelle DLL <Reference Include="Barcode4NET"> |
<PackageReference Include="IronBarcode" /> |
| Keine Lese-API | BarcodeReader.Read(path) |
| Keine PDF-Unterstützung | BarcodeReader.Read("doc.pdf") nativ |
| Nur .NET Framework | .NET Framework4.6.2 bis .NET 9 |
Wenn Teams einen Wechsel von Barcode4NETzu IronBarcode erwägen
.NET -Upgrade blockiert
Der häufigste Auslöser ist ein .NET Modernisierungsprojekt. Ein Team zielt auf net8.0 in seinem .csproj ab, führt den Build aus und stößt auf einen Kompilierungsfehler, da Barcode4NETgegen .NET Framework-Assemblys kompiliert wurde, auf die nicht mehr verwiesen wird. Der Fehler ist eindeutig: Die Bibliothek kann unter dem neuen Zielframework nicht geladen werden. An diesem Punkt steht das Team vor einer binären Entscheidung: Entweder die Änderung des Zielframeworks rückgängig machen und beim .NET Frameworkbleiben, oder Barcode4NETersetzen. Die Migration kann nicht verschoben werden, ohne die umfassenderen Modernisierungsbemühungen zu blockieren.
CI/CD-Pipeline-Fehler nach Infrastrukturänderungen
Das DLL-Verteilungsmodell von Barcode4NETerzeugt eine latente Anfälligkeit in den Build-Pipelines. Wenn ein Build-Agent neu bereitgestellt, ein Container-Image aktualisiert oder eine neue CI-Umgebung konfiguriert wird, muss die Barcode4NET-DLL manuell an dem Pfad abgelegt werden, den die Projektdatei erwartet. Teams, die diesen Schritt nicht sorgfältig dokumentiert haben, entdecken das Problem erst, wenn die Pipeline ausfällt. Der Übergang zu IronBarcode bedeutet, dass dotnet restore alles übernimmt – das Problem mit dem DLL-Speicherort existiert nicht mehr.
Neue Teammitglieder können nicht lizenziert werden
Wenn ein externer Auftragnehmer dem Projekt beitritt oder ein zweiter Entwickler an Barcode-Funktionen arbeiten muss, ist keine Lizenz zu erwerben. Das Team muss diese Einschränkung umgehen – entweder der neue Entwickler vermeidet den Barcode-Code vollständig, oder jemand überträgt eine Lizenz, die unter den ursprünglichen Bedingungen möglicherweise nicht rechtsgültig übertragbar ist. Keine der beiden Situationen ist für ein Team, das aktiv an der Produktentwicklung arbeitet, tragbar.
Sicherheits- und Compliance-Audits
Organisationen, die die Generierung von Software-Stücklisten durchführen oder Abhängigkeiten anhand von Datenbanken, die das Ende ihres Lebenszyklus erreicht haben, überprüfen, stoßen dabei auf Barcode4NET. Es handelt sich um ein kommerzielles Produkt ohne aktiven Anbieter, ohne CVE-Tracking und ohne Verfügbarkeit von Patches. Sicherheitsprüfer behandeln kommerzielle Abhängigkeiten am Ende ihres Lebenszyklus anders als ausgereifte Open-Source-Bibliotheken – das Fehlen eines Reaktionsprozesses seitens des Anbieters bedeutet, dass jede Schwachstelle dauerhaft ungelöst bleibt. Dies wird in der Regel zu einem formellen Sanierungsfall und nicht zu einem aufgeschobenen Risiko.
Lesefunktion zu einem bestehenden Workflow hinzugefügt
Teams, die Barcode4NETursprünglich nur für Generierungs-Workflows verwendet haben, stellen später fest, dass sie Barcodes von gescannten Dokumenten überprüfen, vom Benutzer hochgeladene Bilder verarbeiten oder Daten aus PDF-Rechnungen extrahieren müssen. Bei Barcode4NETist hierfür die Integration einer zweiten Bibliothek erforderlich. IronBarcodes BarcodeReader.Read() verarbeitet sowohl Bilder als auch PDFs nativ und konsolidiert so die Abhängigkeit in einem einzigen gepflegten Paket.
Gemeinsame Überlegungen zur Migration
Entfernen des DLL-Verweis
Barcode4NET wurde nie als NuGet Paket vertrieben, daher gibt es keinen dotnet remove package-Befehl. Jede .csproj Datei, die auf die Bibliothek verweist, enthält ein <Reference Include="Barcode4NET"> Element mit einem <HintPath>, das auf die DLL auf der Festplatte verweist. Jedes dieser Elemente muss manuell gefunden und entfernt werden. Ein grep-Befehl, der die Lösung durchsucht, findet sie:
grep -rl "Barcode4NET" --include="*.csproj" .
grep -rl "Barcode4NET" --include="*.csproj" .
Das DLL-Verzeichnis in der Quellcodeverwaltung – typischerweise ThirdParty/Barcode4NET/ oder lib/ – muss ebenfalls zur Löschung mit git rm bereitgestellt werden.
Änderung des Rückgabetyps von Bitmap zu Byte-Array
Barcode4NETs GenerateBarcode() gibt einen System.Drawing.Bitmap zurück. Die fließende Kette von IronBarcode endet damit, dass .ToPngBinaryData() byte[] zurückgibt oder .SaveAsPng() direkt auf die Festplatte schreibt. Code, der den Rückgabewert einer Variable vom Typ Bitmap zuweist oder ihn an eine Methode übergibt, die einen Wert vom Typ Bitmap erwartet – wie beispielsweise einen WinForms-Wert vom Typ PictureBox –, erfordert eine einzeilige Anpassung an der Aufrufstelle: Schließen Sie das Byte-Array in einen Typ MemoryStream ein und rufen Sie Image.FromStream() auf.
Symbolisierung Enum Umbenennen
Die Aufzählung Symbology in Barcode4NETentspricht direkt der Aufzählung BarcodeEncoding in IronBarcode. Alle gemeinsamen Werte — Code128, Code39, EAN13, UPCA, QRCode — behalten ihre Namen. Eine lösungsweite Suche und Ersetzung von Symbology. durch BarcodeEncoding. deckt die meisten Fälle ab, allerdings sollte jede Ersetzung überprüft werden, um den Kontext zu bestätigen.
Build-Skriptbereinigung
Die Build-Skripte und CI/CD-Konfigurationsdateien, die die Barcode4NET-DLL in Ausgabeverzeichnisse oder Build-Agents kopieren, müssen aktualisiert werden. Diese Schritte haben nach der NuGet Migration kein Äquivalent mehr — dotnet restore ersetzt die gesamte manuelle DLL-Verwaltung. Das Belassen veralteter DLL-Kopierschritte nach der Migration führt zwar nicht zu Build-Fehlern, stellt aber eine tote Konfiguration dar, die für zukünftige Wartungsteams Verwirrung stiftet.
Zusätzliche IronBarcode Funktionen
Funktionen, die in IronBarcode verfügbar sind und zu keinem Zeitpunkt in Barcode4NETenthalten waren:
- Barcode-Lesen aus Bildern :
BarcodeReader.Read()dekodiert alle gängigen 1D- und 2D-Symbologien aus PNG-, JPEG-, TIFF- und anderen Bildformaten. - PDF-Barcode-Lesung : Native PDF-Eingabeunterstützung – keine separate PDF-Extraktionsbibliothek erforderlich
- Einbettung des QR-Code-Logos :
QRCodeWriter.CreateQrCode()mit.AddBrandLogo()für gebrandete QR-Codes - 2D-Formatgenerierung : Data Matrix, PDF417 und Aztec zusätzlich zum QR-Code
- Mehrfach-Barcode-Erkennung :
BarcodeReaderOptions.ExpectMultipleBarcodesfindet alle Barcodes in einem einzelnen Bild - Optimierung der Lesegeschwindigkeit : Die Enumeration
ReadingSpeedoptimiert das Verhältnis von Durchsatz zu Genauigkeit bei der Verarbeitung großer Datenmengen. - ASP.NET Core Integration : Gibt
byte[]direkt von.ToPngBinaryData()zurück, um saubere Controller-Aktionsantworten zu gewährleisten.
.NET-Kompatibilität und Zukunftsfähigkeit
IronBarcode unterstützt .NET Framework4.6.2 bis .NET 9 und erhält Kompatibilitätsupdates mit jeder neuen .NET Version. Da .NET 10 voraussichtlich Ende 2026 erscheint, veröffentlicht Iron Software bereits vor der allgemeinen Verfügbarkeit Vorabversionen, die mit der Preview-Version kompatibel sind. Barcode4NETverfügt über keine .NET Version jenseits des .NET Frameworkund wird auch zukünftig keine Updates mehr erhalten. Teams, die mit .NET Framework4.x arbeiten, können zu IronBarcode migrieren und anschließend ihr Zielframework ohne Einschränkungen durch Barcode-Bibliotheken auf jede aktuelle oder zukünftige .NET Version aktualisieren.
Abschluss
Barcode4NET und IronBarcode repräsentieren unterschiedliche Punkte in der Geschichte der .NET -Barcodeentwicklung. Barcode4NETwar für seine Zeit eine funktionale, gut definierte Bibliothek – eine Property-Setter-API, die saubere Bitmap-Ausgabe für Windows Forms- und Web Forms-Anwendungen auf .NET Frameworkgenerierte. IronBarcode ist ein aktuelles kommerzielles Produkt mit einer flüssigen statischen API, vollständiger Barcode-Leseunterstützung, plattformübergreifender Laufzeitabdeckung und standardmäßiger NuGet Distribution.
Der Vergleich ist ungewöhnlich, da Barcode4NETkein aktives Produkt mehr ist. Es erhält keine Updates, Sicherheitspatches oder neue Lizenzverkäufe. Teams, die evaluieren, welche Bibliothek sie für ein neues Projekt einsetzen sollen, würden Barcode4NETbei dieser Evaluierung nicht begegnen – es ist nur für Teams relevant, die es bereits im Produktiveinsatz haben und entscheiden, wann und wie sie migrieren sollen.
Für Teams, die Barcode4NETbereits produktiv einsetzen, ist IronBarcode der natürliche Ersatz. Die API-Zuordnung ist direkt, die Codeänderungen sind oberflächlich und die Generierungssemantik ist äquivalent. Der Vorteil besteht darin, dass eine Abhängigkeit tatsächlich gewartet wird, von neuen Teammitgliedern installiert werden kann und mit modernen .NET Versionen und Bereitstellungsumgebungen kompatibel ist.
Die ehrliche Einschätzung lautet, dass es sich hier nicht um eine wirklich wettbewerbsfähige Wahl zwischen zwei praktikablen Optionen handelt. Barcode4NETkann nicht auf neue Teammitglieder erweitert werden, ist nicht mit modernen .NET kompatibel und kann nicht auf Sicherheitslücken gepatcht werden. IronBarcode kann das. Die Entscheidung zur Migration wird eher durch praktische Zwänge als durch API-Präferenzen oder Funktionsvergleiche bestimmt.
Häufig gestellte Fragen
Was ist Barcode4.NET?
Barcode4.NET ist eine .NET Barcode-Bibliothek zum Erzeugen und Lesen von Barcodes in C#-Anwendungen. Sie ist eine von mehreren Alternativen, die Entwickler bei der Auswahl einer Barcode-Lösung für .NET-Projekte in Betracht ziehen.
Was sind die Hauptunterschiede zwischen Barcode4.NET und IronBarcode?
IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während Barcode4.NET in der Regel eine Instanzerstellung und -konfiguration vor der Verwendung erfordert. IronBarcode bietet außerdem native PDF-Unterstützung, automatische Formaterkennung und Single-Key-Lizenzierung in allen Umgebungen.
Ist IronBarcode einfacher zu lizenzieren als Barcode4.NET?
IronBarcode verwendet einen einzigen Lizenzschlüssel, der sowohl die Entwicklungs- als auch die Produktionsbereitstellung abdeckt. Dies vereinfacht CI/CD-Pipelines und Docker-Konfigurationen im Vergleich zu Lizenzierungssystemen, die SDK-Schlüssel von Laufzeitschlüsseln trennen.
Unterstützt IronBarcode alle Barcodeformate, die Barcode4.NET unterstützt?
IronBarcode unterstützt über 30 Barcode-Symbologien, darunter QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 und viele mehr. Die automatische Formaterkennung bedeutet, dass keine explizite Formataufzählung erforderlich ist.
Unterstützt IronBarcode das native Lesen von PDF-Barcodes?
Ja, IronBarcode liest Barcodes direkt aus PDF-Dateien mit BarcodeReader.Read("document.pdf"), ohne dass eine separate PDF-Rendering-Bibliothek erforderlich ist. Die seitenweisen Ergebnisse umfassen Seitenzahl, Barcodeformat, Wert und Konfidenzwert.
Wie handhabt IronBarcode die Stapelverarbeitung im Vergleich zu Barcode4.NET?
Die statischen Methoden von IronBarcode sind zustandslos und natürlich thread-sicher, was die direkte Verwendung von Parallel.ForEach ohne Instanzverwaltung pro Thread ermöglicht. Es gibt auf keiner Preisstufe eine Obergrenze für den Durchsatz.
Welche .NET Versionen werden von IronBarcode unterstützt?
IronBarcode unterstützt .NET Framework 4.6.2+, .NET Core 3.1 und .NET 5, 6, 7, 8 und 9 in einem einzigen NuGet-Paket. Zu den Zielplattformen gehören Windows x64/x86, Linux x64 und macOS x64/ARM.
Wie installiere ich IronBarcode in einem .NET-Projekt?
Installieren Sie IronBarcode über NuGet: Führen Sie "Install-Package IronBarCode" in der Paketmanager-Konsole oder "dotnet add package IronBarCode" in der CLI aus. Es sind keine zusätzlichen SDK-Installationsprogramme oder Laufzeitdateien erforderlich.
Kann ich IronBarcode vor dem Kauf testen, im Gegensatz zu Barcode4.NET?
Ja, der Testmodus von IronBarcode liefert vollständige dekodierte Barcodewerte - nur die erzeugten Ausgabebilder erhalten ein Wasserzeichen. Sie können die Lesegenauigkeit an Ihren eigenen Dokumenten testen, bevor Sie sich zum Kauf verpflichten.
Was ist der Preisunterschied zwischen Barcode4.NET und IronBarcode?
Die Preise für IronBarcode beginnen bei 749 US-Dollar für eine unbefristete Einzelentwicklerlizenz für Entwicklung und Produktion. Preisdetails und Volumenoptionen sind auf der IronBarcode-Lizenzierungsseite verfügbar. Es ist keine separate Runtime-Lizenz erforderlich.
Ist es einfach, von Barcode4.NET zu IronBarcode zu migrieren?
Bei der Migration von Barcode4.NET zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch die statischen Methoden von IronBarcode zu ersetzen, Lizenzierungsformulierungen zu entfernen und die Namen von Ergebniseigenschaften zu aktualisieren. Bei den meisten Migrationen wird eher Code reduziert als hinzugefügt.
Kann IronBarcode QR-Codes mit Logos generieren?
Ja. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") bettet ein Markenbild nativ in einen QR-Code mit konfigurierbarer Fehlerkorrektur ein. Farbige QR-Codes werden auch über ChangeBarCodeColor() unterstützt.

