Aspose BarCode for .NET Beispiel vs. IronBarcode: Ein direkter Vergleich anhand von Codebeispielen
Barcode4NETvs IronBarcode: Vergleich eines End-of-Life Generators mit einer modernen .NET Barcode-Bibliothek
Barcode4NET ist effektiv end-of-life. Die letzte Veröffentlichung — Barcode4NET2.0 von O2 Solutions — erfolgte am 25. Juni 2007. Neue Lizenzen werden nicht mehr über ComponentSource verkauft (bestehende Kunden können den Support und die Software-Updates noch erneuern), kein NuGet-Paket wurde je veröffentlicht und die Bibliothek zielt auf .NET Framework1.1 / 2.0 / 3.x und .NET Compact Framework. 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-Erzeugungsbibliothek, die von O2 Solutions veröffentlicht und über ComponentSource vertrieben wurde. Sie wurde für Windows-basierte .NET Framework-Anwendungen entwickelt — hauptsächlich Windows Forms, ASP.NET Web Forms, .NET Compact Framework und SQL Server Reporting Services 2000 / 2005 — und lieferte saubere Bitmap- und Vektorausgabe für die 1D- und 2D-Symbologien ihrer 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. Jedes Projekt, das es verwendete, erforderte ein manuelles <Reference>-Element in der .csproj-Datei, das auf die DLL auf der Festplatte verweist. 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, wiesenSymbology,Data,WidthundHeightals Eigenschaften zu und riefen dannGenerateBarcode()auf, um einSystem.Drawing.Bitmapzu erhalten. - Symbology coverage: 39 1D symbologies (Code128, Code39, EAN-13, UPC-A, and more) plus five 2D formats (DataMatrix, PDF417, MicroPDF417, Code 16K, CODABLOCK F); QR-Code und aztekisch werden nicht unterstützt.
- Nur für die Generation: Das Produkt verfügte nie über eine Barcode-Lese- oder Scanfunktion.
- Windows and .NET Frameworkonly: Targets .NET Framework1.1 / 2.0 / 3.x and .NET Compact Framework; keine .NET Core, .NET 5+, Linux, macOS, Dockeroder Cloud-Laufzeitunterstützung.
- Keine NuGet Distribution: Manuelle DLL-Referenzierung in jeder Projektdatei und Build-Pipeline erforderlich.
- End-of-Life: Keine neuen Lizenzen, die über ComponentSource verkauft werden, und kein Code-Release seit 2007
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 fluente Verkettung, keine Lesefähigkeit, keine QR-Code-Unterstützung und keine erweiterten 2D-Optionen wie Logo-Einbettung oder Fehlerkorrekturkontrolle.
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 Erzeugung verwendet BarcodeWriter.CreateBarcode() mit einem Datenstring und einem Codierungstyp, gefolgt von kaskadierbaren Optionen für Größe, Farbe und Format. Das Lesen verwendet BarcodeReader.Read(), das Bilddateipfade, Streams und PDF-Dokumente akzeptiert, ohne dass eine separate PDF-Bibliothek erforderlich ist.
Hauptmerkmale von IronBarcode:
- Fluente statische Generierungs-API:
BarcodeWriter.CreateBarcode()verknüpft.ResizeTo(),.AddAnnotationTextAboveBarcode()und Speichermethoden in einem einzigen Ausdruck. - Barcode-Lesen:
BarcodeReader.Read()dekodiert Barcodes aus Bildern und PDFs nativ. - Umfassende Formatunterstützung: Code128, Code39, EAN-13, UPC-A, QR-Code, Data Matrix, PDF417, aztekisch und mehr
- QR-Code-Spezialisierung:
QRCodeWriter.CreateQrCode()bietet QR-spezifische Optionen einschließlich Logo-Einbettung und Fehlerkorrekturstufe. - NuGet-Verteilung: Standard-
dotnet add package IronBarcode-Installation;dotnet restorehandelt 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 for .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 | Nein | Ja — QRCodeWriter.CreateQrCode() |
| QR-Code mit Logo | Nein | Ja — .AddBrandLogo() |
| Data Matrix / PDF417 | Ja | Ja |
| aztekisch | 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. Entwickler instanziierten ein Barcode-Objekt, wiesen einzelne Eigenschaften zu und riefen GenerateBarcode() auf, um ein System.Drawing.Bitmap 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 dafür verantwortlich war, das Bild zu speichern, anzuzeigen oder zu streamen. Dies war geeignet für WinForms-Anwendungen, bei denen einem Bitmap direkt ein PictureBox zugewiesen werden konnte, erforderte jedoch zusätzliche Konvertierungsschritte für jedes andere Ausgabemedium.
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
Das BarcodeEncoding enum entspricht direkt dem Symbology enum. .ResizeTo() ersetzt die Width und Height Eigenschaftszuweisungen. Terminalmethoden — .SaveAsPng(), .SaveAsJpeg(), .ToPngBinaryData() — ersetzen die separaten GenerateBarcode() und Bitmap-Speicheraufrufe. 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 bietet BarcodeReader.Read() als statische Methode an, 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
In Szenarien mit hohem Volumen oder geräuschlastigen Bildern bietet die BarcodeReaderOptions-Klasse Kontrolle über Lesegeschwindigkeit und Multi-Barcode-Erkennung. 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. Jedes Projekt, das auf net5.0 oder später abzielt, konnte 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. In containerbasierten Bereitstellungen bedeutete dies entweder, die DLL in ein benutzerdefiniertes Basis-Image einzubacken oder sie während des Container-Builds zu kopieren, was mit standardisierten dotnet restore Workflows nicht 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 dotnet restore-Befehl löst alle Abhängigkeiten ohne jegliches manuelle DLL-Management.
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 ist effektiv end-of-life. Neue Lizenzen werden nicht mehr über ComponentSource verkauft, obwohl bestehende Kunden Support und Software-Updates gemäß den Bedingungen des Anbieters über ComponentSource erneuern können. Wenn ein neuer Entwickler einem Team beitritt, das Barcode4NETverwendet, gibt es keinen Mechanismus, um einen zusätzlichen Sitzplatz für ihn zu erwerben. Die letzte Codeveröffentlichung war Version 2.0 im Jahr 2007, daher werden entdeckte Fehler oder Sicherheitsprobleme seit dieser Veröffentlichung nicht durch Patches behoben.
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 für 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.Code39 |
BarcodeEncoding.Code39 |
Symbology.EAN13 |
BarcodeEncoding.EAN13 |
Symbology.UPCA |
BarcodeEncoding.UPCA |
Symbology.DataMatrix |
BarcodeEncoding.DataMatrix |
Symbology.PDF417 |
BarcodeEncoding.PDF417 |
| (QR Code not supported in Barcode4NET) | BarcodeEncoding.QRCode |
Manuelles 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 in ihrem .csproj auf net8.0 ab, führt den Build aus und begegnet einem Ladefehler, da Barcode4NETfor .NET Framework1.1 / 2.0 / 3.x erstellt wurde und nicht von einem modernen .NET-Ziel referenziert werden kann. 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 Wechsel zu IronBarcode bedeutet, dass dotnet restore alles übernimmt — das Problem der DLL-Positionierung 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 ist ein kommerzielles Produkt ohne Codeveröffentlichung seit 2007 und ohne CVE-Tracking oder Patch-Stream. Sicherheitsprüfer behandeln Abhängigkeiten in diesem Zustand typischerweise anders als aktiv gepflegte Bibliotheken, und der Befund wird oft zu einem formellen Sanierungselement anstelle eines aufgeschobenen Risikos.
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 die Abhängigkeit in ein einziges gepflegtes Paket.
Gemeinsame Überlegungen zur Migration
Entfernen des DLL-Verweis
Barcode4NET wurde nie als ein NuGet-Paket vertrieben, daher gibt es keinen dotnet remove package-Befehl. Jede .csproj-Datei, die die Bibliothek referenziert, enthält ein <Reference Include="Barcode4NET">-Element mit einem <HintPath>, der 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 Versionskontrolle — typischerweise ThirdParty/Barcode4NET/ oder lib/—muss auch zur Löschung mit git rm bereitgestellt werden.
Änderung des Rückgabetyps von Bitmap zu Byte-Array
Barcode4NET's GenerateBarcode() gibt ein System.Drawing.Bitmap zurück. IronBarcodes fluente Kette endet mit .ToPngBinaryData(), das byte[] zurückgibt, oder .SaveAsPng(), das direkt auf die Festplatte schreibt. Code, der den Rückgabewert einer Bitmap-typisierten Variablen zuweist oder ihn an eine Methode übergibt, die ein Bitmap erwartet — wie eine WinForms PictureBox — erfordert eine Einzeilenanpassung an der Aufrufstelle: Wickeln Sie das Byte-Array in ein MemoryStream und rufen Sie Image.FromStream() auf.
Symbolisierung Enum Umbenennen
Das Symbology enum in Barcode4NETentspricht direkt dem BarcodeEncoding enum in IronBarcode. Alle gemeinsamen Werte — Code128, Code39, EAN13, UPCA, QRCode — behalten ihre Namen. Ein lösungsweites Suchen-und-Ersetzen von Symbology. mit BarcodeEncoding. deckt die meisten Fälle ab, obwohl jede Ersetzung überprüft werden sollte, 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 — 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 wichtigen 1D- und 2D-Symbologien aus PNG, JPEG, TIFF und anderen Bildformaten - PDF-Barcode-Lesung : Native PDF-Eingabeunterstützung – keine separate PDF-Extraktionsbibliothek erforderlich
- QR code logo embedding:
QRCodeWriter.CreateQrCode()with.AddBrandLogo()for branded QR codes - 2D-Formatgenerierung : Data Matrix, PDF417 und aztekisch zusätzlich zum QR-Code
- Multi-barcode detection:
BarcodeReaderOptions.ExpectMultipleBarcodesfinds all barcodes in a single image - Leseleistung Feinabstimmung:
ReadingSpeedenum balanciert Durchsatz und Genauigkeit für hochvolumige Verarbeitung - ASP.NET Core-Integration: Gibt
byte[]direkt von.ToPngBinaryData()für saubere Controller-Antworten zurück
.NET-Kompatibilität und Zukunftsfähigkeit
IronBarcode unterstützt .NET Framework4.6.2 bis .NET 9 und erhält Kompatibilitätsupdates, sobald neue .NET-Versionen verfügbar sind. Barcode4NETzielt auf .NET Framework1.1 / 2.0 / 3.x und .NET Compact Framework ab, und es wurde seit 2007 keine Version veröffentlicht. Teams auf .NET Framework4.x können zu IronBarcode migrieren und dann frei ihr Ziel-Framework auf jede aktuelle .NET-Version ohne Einschränkungen für die Barcode-Bibliothek 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 for .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.

