Migrieren von Barcode4NETzu IronBarcode
Dieser Migrationsleitfaden beschreibt die Entfernung einer Barcode4NET-Abhängigkeit und deren Ersetzung durch IronBarcode. Er enthält Schritt-für-Schritt-Anleitungen, Codevergleiche und praktische Beispiele for .NET Entwickler, die diesen Übergang durchführen. Barcode4NETwurde ohne offizielle Ankündigung eingestellt – es wurden keine neuen Lizenzen mehr verkauft, es wurde kein NuGet Paket mehr veröffentlicht, und die Bibliothek läuft ausschließlich auf .NET Framework. Dieser Leitfaden ist praxisnah und präzise: Er behandelt das Entfernen des DLL-Verweises, die Installation von IronBarcode über NuGet und die Konvertierung des Generierungscodes. Es umfasst auch die Lese- und PDF-Funktionen, die nach der Migration verfügbar werden und die über Barcode4NETüberhaupt nicht verfügbar waren.
Warum von Barcode4NETmigrieren?
Teams, die von Barcode4NETmigrieren, berichten von folgenden wiederkehrenden Auslösern:
Keine neuen Lizenzen verfügbar: Barcode4NET-Lizenzen werden nicht mehr über ComponentSource oder andere Kanäle verkauft. Wenn ein Entwickler einem Team beitritt, das Barcode4NETverwendet, gibt es keinen Mechanismus, um einen Lizenzplatz für ihn zu erwerben. Ein Auftragnehmer, der dem Projekt beitritt, oder ein zweiter Entwickler, der an Barcode-Funktionen arbeiten muss, kann nicht rechtmäßig unter den ursprünglichen Produktbedingungen lizenziert werden.
Kein NuGet Paket: Dies ist keine geringfügige Unannehmlichkeit – es handelt sich um eine grundlegende Inkompatibilität mit modernen .NET -Workflows. Jeder Entwickler, der das Repository klont, muss wissen, wo sich die DLL befindet. CI/CD-Pipelines müssen manuell konfiguriert werden, um es zu finden. Der dotnet restore-Befehl löst das Problem nicht. Die DLL wird entweder in die Quellcodeverwaltung eingecheckt oder in einem privaten Artefaktspeicher verwaltet, was in beiden Fällen eine laufende manuelle Wartung erfordert.
Keine Unterstützung für .NET 5, 6, 7, 8 oder 9: Barcode4NETist ausschließlich für das .NET Framework ausgelegt. Wenn eine Organisation ihr Ziel-Framework auf net8.0 aktualisiert, schlägt der Build fehl, weil die Bibliothek gegen nicht mehr referenzierte .NET Framework-Assemblies kompiliert wurde. Es wird keinen Patch geben. Wenn das Team aus Performancegründen, für die Bereitstellung unter Linux oder Docker oder für langfristigen Microsoft-Support auf modernes .NET umsteigen muss, stellt Barcode4NETein großes Hindernis dar.
Keine Sicherheitspatches: Die Bibliothek ist in dem Zustand eingefroren, in dem sie sich befand, als die Entwicklung eingestellt wurde. Sämtliche seitdem entdeckten Sicherheitslücken sind weiterhin ungelöst. Es gibt kein Problemverfolgungssystem, keinen Ansprechpartner für die Wartung und keinen Antwortprozess des Anbieters.
Keine Fehlerbehebungen: Wenn bei einer bestimmten Symbologievariante oder einem Sonderfall bei den Barcode-Abmessungen ein Darstellungsproblem auftritt, gibt es keinen Lösungsweg. Die Bibliothek wird nicht aktualisiert.
Das grundsätzliche Problem
Der häufigste Zeitpunkt, an dem die Entdeckung erfolgt, ist, wenn ein Entwickler im Rahmen eines .NET Modernisierungsprojekts das Zielframework aktualisiert. Der Build schlägt fehl, weil die DLL von Barcode4NETgegen .NET Framework -Assemblies kompiliert wurde, die unter dem neuen Ziel nicht mehr verfügbar sind. Das Problem ist nicht die Generierungs-API selbst, sondern die zugrunde liegende Abhängigkeit, die nicht weiterverfolgt werden kann.
// Barcode4NET— locked to .NET Framework, no NuGet package
// Requires manual DLL reference in every .csproj:
// <Reference Include="Barcode4NET">
// <HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
// </Reference>
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);
// IronBarcode — NuGet package, .NET Framework 4.6.2 through .NET 9
// dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.SaveAsPng(outputPath);Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.SaveAsPng(outputPath)IronBarcode vs. Barcode4NET: Funktionsvergleich
| Feature | Barcode4NET | IronBarcode |
|---|---|---|
| NuGet-Paket | Nein – nur manuelle DLL-Datei | Ja (IronBarcode) |
| .NET Framework -Unterstützung | Ja (nur .NET Framework ) | Ja (.NET Framework 4.6.2+) |
| .NET Core / .NET 5+ Unterstützung | Nein | Ja (.NET 5, 6, 7, 8, 9) |
| Linux-/macOS-Unterstützung | Nein | Ja |
| Docker-Unterstützung | Nein | Ja |
| Azure / AWS Lambda | Nein | Ja |
| Barcode-Generierung | Ja | Ja |
| Barcode-Lesen / Scannen | Nein | Ja (BarcodeReader.Read()) |
| PDF-Barcode-Lesen | Nein | Ja (nativ, keine zusätzliche Bibliothek) |
| QR-Code mit Logo | Nein | Ja (AddBrandLogo()) |
| Fluent verkettbare API | Nein | Ja |
| Aktive Wartung | Nein (Lebensende) | Ja |
| Neue Lizenzen verfügbar | Nein | Ja — Lite $999, Plus $1,499, Profi $2,999, Unbegrenzt $4,799 |
| Sicherheitspatches | Nein | Ja |
| CI/CD-Pipeline-Integration | Manuelle DLL-Kopierschritte | Standard dotnet restore |
Schnellstart: Migration von Barcode4NETzu IronBarcode
Mit diesen grundlegenden Schritten kann die Migration sofort beginnen.
Schritt 1: Ersetzen des NuGet-Pakets
Barcode4NET wurde nie als NuGet-Paket verteilt, daher gibt es keinen dotnet remove package-Befehl. Manuell entfernen.
Löschen Sie die DLL aus der Quellcodeverwaltung und stellen Sie den Löschvorgang bereit:
git rm -r ThirdParty/Barcode4NET/
Entfernen Sie das <Reference>-Element aus jeder .csproj-Datei. Suchen Sie in der gesamten Lösung nach jeder Datei, die aktualisiert werden muss:
grep -rl "Barcode4NET" --include="*.csproj" .
Entfernen Sie dieses Element aus jeder .csproj-Datei, die es enthält:
<Reference Include="Barcode4NET">
<HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
</Reference>
Installieren Sie anschließend IronBarcode:
dotnet add package IronBarcode
Dieser einzelne Befehl fügt IronBarcode hinzu und löst alle Abhängigkeiten auf. Keine DLL-Verwaltung, kein Artefaktspeicher, keine manuellen Kopierschritte.
Schritt 2: Namespaces aktualisieren
Ersetzen Sie die alte using-Direktive am Anfang jeder Datei, die Barcode4NETverwendet hat:
// Before
using Barcode4NET;
// After
using IronBarCode;Imports Barcode4NET
' After
Imports IronBarCodeSchritt 3: Lizenz initialisieren
Fügen Sie die Lizenzinitialisierung beim Anwendungsstart hinzu – in Program.cs, Startup.cs oder wo immer Ihre Anwendung gestartet wird:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"Beispiele für die Code-Migration
Grundlegende Etikettengenerierung
Das häufigste Barcode4NET-Muster: Ein Objekt erstellen, Eigenschaften festlegen, GenerateBarcode() aufrufen, um ein Bitmap zu erhalten, und es dann speichern.
Barcode4NET-Ansatz:
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public void SaveLabel(string sku, string outputPath)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
}Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Public Sub SaveLabel(sku As String, outputPath As String)
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = sku
barcode.Width = 400
barcode.Height = 120
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
End SubIronBarcode -Ansatz:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public void SaveLabel(string sku, string outputPath)
{
BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.SaveAsPng(outputPath);
}Imports IronBarCode
Public Sub SaveLabel(sku As String, outputPath As String)
BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.SaveAsPng(outputPath)
End SubDer Property-Setter-Block reduziert sich auf eine einzige Flow-Kette. Der .ResizeTo()-Aufruf ersetzt die Zuweisungen der Width- und Height-Eigenschaften. .SaveAsPng() ersetzt sowohl GenerateBarcode() als auch den separaten barcodeImage.Save()-Aufruf. Weitere Optionen zur Barcode-Generierung finden Sie in der IronBarcode -Dokumentation zur Barcode-Generierung .
WinForms PictureBox-Anzeige
Wenn Ihr Barcode4NET-Code den Bitmap-Rückgabewert direkt einem PictureBox oder einem ähnlichen Steuerelement zugewiesen hat, laden Sie stattdessen ein Byte-Array über eine MemoryStream.
Barcode4NET-Ansatz:
using Barcode4NET;
using System.Drawing;
private void RefreshBarcodeDisplay(string data)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = data;
barcode.Width = 300;
barcode.Height = 100;
pictureBox1.Image = barcode.GenerateBarcode();
}Imports Barcode4NET
Imports System.Drawing
Private Sub RefreshBarcodeDisplay(data As String)
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = data
barcode.Width = 300
barcode.Height = 100
pictureBox1.Image = barcode.GenerateBarcode()
End SubIronBarcode -Ansatz:
using IronBarCode;
using System.Drawing;
using System.IO;
private void RefreshBarcodeDisplay(string data)
{
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.ToPngBinaryData();
using var stream = new MemoryStream(pngBytes);
pictureBox1.Image = Image.FromStream(stream);
}Imports IronBarCode
Imports System.Drawing
Imports System.IO
Private Sub RefreshBarcodeDisplay(data As String)
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.ToPngBinaryData()
Using stream As New MemoryStream(pngBytes)
pictureBox1.Image = Image.FromStream(stream)
End Using
End SubDer MemoryStream-Schritt ist die einzige strukturelle Ergänzung. Alles andere ist eine direkte Übersetzung des Property-Setter-Musters in die Fluent Chain.
QR-Code-Generierung
Barcode4NET-Ansatz:
using Barcode4NET;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.QRCode;
barcode.Data = "https://example.com/product/99";
barcode.Width = 300;
barcode.Height = 300;
Bitmap qrImage = barcode.GenerateBarcode();
qrImage.Save("qr.png", System.Drawing.Imaging.ImageFormat.Png);Imports Barcode4NET
Imports System.Drawing.Imaging
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.QRCode
barcode.Data = "https://example.com/product/99"
barcode.Width = 300
barcode.Height = 300
Dim qrImage As Bitmap = barcode.GenerateBarcode()
qrImage.Save("qr.png", ImageFormat.Png)IronBarcode -Ansatz:
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com/product/99", 300)
.SaveAsPng("qr.png");Imports IronBarCode
QRCodeWriter.CreateQrCode("https://example.com/product/99", 300) _
.SaveAsPng("qr.png")IronBarcode verwendet eine dedizierte QRCodeWriter-Klasse für QR-Codes, die Zugriff auf QR-spezifische Optionen wie den Fehlerkorrekturlevel und das Einbetten von Markenlogos bietet. Der zweite Parameter von QRCodeWriter.CreateQrCode() ist die Pixelgröße des quadratischen Bildes.
Hinzufügen von Barcode-Lesen
Barcode4NET besaß keine Lese-API. Wenn Ihre Anwendung gescannte Dokumente verarbeitet, generierte Barcodes überprüft oder Daten aus PDF-Rechnungen extrahiert, steht Ihnen diese Funktionalität unmittelbar nach der Migration ohne Hinzufügen einer zweiten Bibliothek zur Verfügung.
Barcode4NET-Ansatz:
//Neinreading API available in Barcode4NET.
// Required a separate library (e.g., ZXing.Net) to decode barcodes.
IronBarcode -Ansatz:
using IronBarCode;
// Read a barcode from an image file
var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Symbology: {result.Format}");
}
// Read all barcodes from a PDF — pages are handled automatically
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}Imports IronBarCode
' Read a barcode from an image file
Dim results = BarcodeReader.Read("scanned-label.png")
For Each result In results
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Symbology: {result.Format}")
Next
' Read all barcodes from a PDF — pages are handled automatically
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
NextZum Lesen von PDFs ist keine zusätzliche Bibliothek erforderlich. BarcodeReader.Read() verarbeitet sowohl Bild- als auch PDF-Eingaben nativ. Informationen zu Konfigurationsoptionen wie Lesegeschwindigkeit und Mehrfach-Barcode-Erkennung finden Sie in der Dokumentation zum Barcode-Lesen .
Aktualisierung des Zielframeworks
Sobald Barcode4NETentfernt wird, entfällt auch die Einschränkung durch das .NET Framework . Aktualisieren Sie das TargetFramework-Element in Ihrem .csproj:
Barcode4NET-Ansatz:
<!-- Locked to .NET Framework to support Barcode4NET-->
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
IronBarcode -Ansatz:
<!-- Upgrade freely — IronBarcode supports net8.0 and later -->
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
IronBarcode unterstützt .NET Framework 4.6.2 bis .NET 9, sodass das Zielframework ohne Einschränkungen durch die Barcode-Bibliothek auf das von Ihrer Organisation gewünschte Framework aktualisiert werden kann.
ASP.NET Core Controller – Rückgabe eines Barcodes als Bildantwort
Wenn Sie gleichzeitig eine Web Forms-Anwendung modernisieren, finden Sie hier das ASP.NET Core Muster zum Zurückgeben eines Barcode-Bildes aus einer Controller-Aktion:
Barcode4NET-Ansatz:
// Barcode4NETwas not compatible with ASP.NET Core.
// Web Forms HttpHandler was required for image delivery.
IronBarcode -Ansatz:
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/barcodes")]
public class BarcodesController : ControllerBase
{
[HttpGet("{data}")]
public IActionResult Get(string data)
{
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
return File(pngBytes, "image/png");
}
}Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("api/barcodes")>
Public Class BarcodesController
Inherits ControllerBase
<HttpGet("{data}")>
Public Function [Get](data As String) As IActionResult
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.ToPngBinaryData()
Return File(pngBytes, "image/png")
End Function
End Class.ToPngBinaryData() gibt direkt ein byte[] zurück, das ohne Zwischenumwandlung in das File()-Ergebnis eingefügt wird.
Barcode4NETAPI zu IronBarcode 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 |
<Reference Include="Barcode4NET"> | <PackageReference Include="IronBarcode" /> |
.NET Framework only | .NET Framework 4.6.2 through .NET 9 |
| Nur Generierung | Erzeugung + Lesen (BarcodeReader.Read()) |
| Keine PDF-Unterstützung | BarcodeReader.Read("doc.pdf") nativ |
Gängige Migrationsprobleme und Lösungen
Problem 1: Kein dotnet remove package für DLL-Verweise
Barcode4NET: Da Barcode4NETnie ein NuGet -Paket war, gibt es keinen Paketmanager-Befehl, um es zu entfernen. Das <Reference Include="Barcode4NET">-Element muss manuell aus jeder .csproj-Datei entfernt werden, und das DLL-Verzeichnis muss ausdrücklich aus der Versionskontrolle gelöscht werden.
Lösung: Führen Sie eine Suche durch, um alle Projektdateien zu finden, die auf die DLL verweisen, und entfernen Sie die Elemente anschließend manuell:
grep -rn "Barcode4NET" --include="*.csproj" .
Lassen Sie die DLL-Referenz nicht neben der neuen NuGet Referenz bestehen – dies führt zu Build-Fehlern aufgrund von mehrdeutiger Typauflösung.
Problem 2: Änderung des Rückgabetyps von Bitmap zu Byte-Array
Barcode4NET: GenerateBarcode() gibt System.Drawing.Bitmap zurück. Code, der den Rückgabewert einem Bitmap-typisierten Variablen zuweist oder ihn an eine Methode übergibt, die ein Bitmap erwartet – wie z.B. ein PictureBox – muss aktualisiert werden.
Lösung: Ersetzen Sie .GenerateBarcode()-Zuweisungen mit .ToPngBinaryData() und laden Sie das Byte-Array am Aufrufort über eine MemoryStream:
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.ToPngBinaryData();
using var stream = new MemoryStream(pngBytes);
pictureBox1.Image = Image.FromStream(stream);Imports System.IO
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.ToPngBinaryData()
Using stream As New MemoryStream(pngBytes)
pictureBox1.Image = Image.FromStream(stream)
End UsingDie Suche nach .GenerateBarcode() in der gesamten Lösung wird alle Aufrufstellen lokalisieren, die aktualisiert werden müssen.
Problem 3: Änderung des Symbolisierungs-Enum-Namensraums
Barcode4NET: Verwendet Symbology.Code128, Symbology.QRCode, Symbology.Code39 und ähnliche Werte aus dem Barcode4NET-Namensraum.
Lösung: Ersetzen Sie mit BarcodeEncoding-Enum-Werten. Alle gebräuchlichen Namen bleiben erhalten – nur der Typname ändert sich:
// Before
barcode.Symbology = Symbology.Code128;
// After
BarcodeEncoding.Code128 // passed as parameter to CreateBarcode()' Before
barcode.Symbology = Symbology.Code128
' After
BarcodeEncoding.Code128 ' passed as parameter to CreateBarcode()Ein globales Suchen-und-Ersetzen von Symbology. mit BarcodeEncoding. deckt die meisten Fälle ab. Prüfen Sie jeden Austausch, um den Kontext zu bestätigen.
Problem 4: Breite und Höhe sind jetzt eine Methode, keine Eigenschaften mehr
Barcode4NET: Die Größe wurde als zwei separate Eigenschaftszuweisungen konfiguriert: barCode.Width = 300; barcode.Height = 100;
Lösung: Verwenden Sie die .ResizeTo(width, height)-verkettete Methode. Dies ist syntaktisch unterschiedlich genug, dass ein einfaches Suchen-und-Ersetzen es nicht erfasst – suchen Sie in barcode-bezogenem Code nach .Width = und .Height = und aktualisieren Sie jedes Vorkommen:
// Before
barcode.Width = 300;
barcode.Height = 100;
// After — chained on the CreateBarcode call
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.SaveAsPng(outputPath);' Before
barcode.Width = 300
barcode.Height = 100
' After — chained on the CreateBarcode call
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.SaveAsPng(outputPath)Barcode4NET-Migrationscheckliste
Vor der Migration anfallende Aufgaben
Führen Sie diese Suchvorgänge in Ihrer Lösung durch, bevor Sie beginnen. Sie liefern ein genaues Bild des Migrationsumfangs:
# Find all Barcode4NETusages in source files
grep -rn "Barcode4NET" --include="*.cs" .
# Find the using directive
grep -rn "using Barcode4NET" --include="*.cs" .
# Find object creation
grep -rn "new Barcode4NET.Barcode()" --include="*.cs" .
# Find Symbology enum usage
grep -rn "Symbology\." --include="*.cs" .
# Find GenerateBarcode calls
grep -rn "\.GenerateBarcode()" --include="*.cs" .
# Find the DLL reference in project files
grep -rn "Barcode4NET" --include="*.csproj" .
# Find DLL references in build scripts
grep -rn "Barcode4NET" --include="*.yml" .
grep -rn "Barcode4NET" --include="*.yaml" .
grep -rn "ThirdParty/Barcode4NET" .
Notieren Sie die Anzahl der Dateien für jedes Muster. Dokumentieren Sie den Code für koordinatenbasiertes Zeichnen, die Muster der Schriftartverwendung und alle Build-Skriptschritte, die die DLL kopieren.
Aufgaben der Code-Aktualisierung
- Löschen Sie
ThirdParty/Barcode4NET/aus der Versionskontrolle (git rm -r) - Entfernen Sie
<Reference Include="Barcode4NET">aus allen.csproj-Dateien - Entfernen Sie manuelle DLL-Kopierschritte aus Build-Skripten und CI/CD-Pipeline-Dateien.
- Führen Sie
dotnet add package IronBarcodefür jedes Projekt in der Lösung aus - Fügen Sie
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";beim Anwendungsstart hinzu - Ersetzen Sie
using Barcode4NET;durchusing IronBarCode;in allen.cs-Dateien - Ersetzen Sie
new Barcode4NET.Barcode()-Blöcke durchBarcodeWriter.CreateBarcode()-Aufrufe - Ersetzen Sie
Symbology.XdurchBarcodeEncoding.Xüberall - Ersetzen Sie
barcode.Width = N; barcode.Height = M;with.ResizeTo(N, M) - Ersetzen Sie
.GenerateBarcode()-Zuweisungen durch.SaveAsPng()oder.ToPngBinaryData() - Aktualisieren Sie
PictureBoxoder andere Bildsteuerungszuweisungen, um dasMemoryStream-Muster zu verwenden - Aktualisieren Sie
TargetFrameworkin.csproj-Dateien, wenn Sie vonnet4xxupgraden - Führen Sie den vollständigen Build durch und beheben Sie alle verbleibenden Kompilierungsfehler.
Post-Migrationstests
- Vergleichen Sie die visuelle Barcode-Ausgabe mit bekannten, einwandfreien Mustern, um das Erscheinungsbild zu bestätigen.
- Überprüfen Sie, ob die Hardware des Barcode-Scanners generierte Barcodes aller betroffenen Symbologien lesen kann.
- Testen Sie, ob
BarcodeEncoding-Werte mit den erwarteten Ausgaben für Code128, Code39, EAN-13, UPC-A und QR-Code übereinstimmen - Prüfen Sie, ob das
MemoryStream-Muster korrekt in WinForms-Steuerelementen angezeigt wird, sofern anwendbar - Bestätigen Sie, dass die CI/CD-Pipeline erfolgreich abgeschlossen wird, indem nur
dotnet restoreverwendet wird, ohne manuelle DLL-Schritte - Testen Sie die Barcode-Lesefunktionalität, wenn
BarcodeReader.Read()als Teil der Migration hinzugefügt wurde
Wichtigste Vorteile der Migration zu IronBarcode
Die Möglichkeit, neue Teammitglieder zu lizenzieren, wurde wiederhergestellt: IronBarcode ist ein aktives kommerzielles Produkt, für das unbefristete Lizenzen zu festgelegten Preisen erhältlich sind. Neue Entwickler, Auftragnehmer und Teammitglieder können sofort lizenziert werden. Die Situation, in der ein Entwickler dem Unternehmen beitritt und rechtlich nicht an Barcode-bezogenem Code arbeiten kann, gehört der Vergangenheit an.
Standard NuGet-Abhängigkeitsverwaltung: Nach der Migration erledigt dotnet restore alles. Neue Entwickler klonen das Repository, stellen Pakete wieder her und erstellen Builds, ohne Kenntnisse über DLL-Speicherorte, Artefaktspeicher oder manuelle Kopiervorgänge zu haben. Die Reibungsverluste, die die DLL-Distribution von Barcode4NETin jeder CI/CD-Pipeline und jedem Onboarding-Workflow verursachte, werden beseitigt.
Volle .NET Versionsfreiheit: Die Aufhebung der Barcode4NET-Beschränkung ermöglicht die Umsetzung von .NET -Modernisierungsprojekten. Das Zielframework kann ohne Einschränkungen der Barcode-Bibliothek auf .NET 8, .NET 9 oder zukünftige Versionen aktualisiert werden. Linux-Bereitstellung, Docker-Containerisierung und Cloud-Serverless-Laufzeitumgebungen werden alle verfügbar sein.
Barcode-Lesen ohne eine zweite Bibliothek: BarcodeReader.Read() dekodiert Barcodes nativ aus Bildern und PDFs. Teams, die bisher Barcode4NETzur Generierung mit ZXing .NET oder einer anderen Bibliothek zum Lesen kombiniert haben, können dies nun auf eine einzige, verwaltete Abhängigkeit reduzieren. Für das Lesen von PDF-Barcodes ist keine zusätzliche PDF-Bibliothek erforderlich.
Sicherheits- und Compliance-Status: IronBarcode erhält regelmäßig Sicherheitspatches und wird anhand aktueller CVE-Datenbanken überwacht. Bei Software-Stücklistenprüfungen wird Barcode4NETnicht mehr als auslaufende kommerzielle Abhängigkeit ohne Reaktionsprozess des Anbieters ausgewiesen. Die von Barcode4NETim Rahmen von Sicherheitsaudits festgestellten Mängel werden behoben, sobald die Migration abgeschlossen ist.
Aktiver Entwicklungsrhythmus: IronBarcode veröffentlicht regelmäßig Updates, die auf neue .NET Versionen abgestimmt sind. Kompatibilitätsaktualisierungen für zukünftige .NET-Versionen werden über das Paket bereitgestellt, sodass die Bibliothek nicht in dem Zustand eingefroren wird, in dem ein Anbieter still geworden ist.

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.