IRONSOFTWAREHOME
VIDÉOS

Passer de Code-barres net à IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 août 2026

Ce guide décrit l'intégralité du processus de migration de Code-barres net vers IronBarcode , avec les étapes de suppression des packages, les mises à jour des espaces de noms, des exemples de traduction d'API et une liste de contrôle pour localiser chaque point d'appel avant le début de la migration. Le guide traite du scénario courant dans lequel un projet commence avec Code-barres net pour la génération de codes-barres 1D et nécessite plus tard des formats 2D, des capacités de lecture ou une clarification de l'obligation de licence SixLabors.ImageSharp — toutes desquelles sont en dehors du champ d'application de NetBarcode.

Pourquoi migrer depuis Code-barres net ?

Format de plafond : L'énumération Type de Code-barres net définit exactement 11 formats de codes-barres, tous linéaires. Aucune entrée n'est disponible pour les codes QR, DataMatrix, PDF417 ou Aztec. Lorsqu'un projet ajoute une exigence de code QR — pour les liens de livraison sans contact, les liens profonds mobiles ou une exigence DataMatrix pharmaceutique — Code-barres net ne peut pas y répondre. La seule solution prévue par la conception de la bibliothèque est de cesser de l'utiliser pour ce format et d'introduire un package séparé. Chaque besoin de format supplémentaire qui dépasse l'énumération à 11 entrées ajoute une autre bibliothèque à l'arbre de dépendances.

Absence d'API de lecture : Code-barres net génère des images de codes-barres et ne fournit aucune méthode pour les décoder. Un projet qui doit scanner les étiquettes de retour d'expédition, extraire les valeurs des codes-barres des factures des fournisseurs ou vérifier qu'un code-barres imprimé correspond à ses données sources doit ajouter une bibliothèque de lecture distincte. ZXing .NET est le choix le plus courant, introduisant une troisième surface d'API dans une base de code qui contient déjà Code-barres net et, généralement, une bibliothèque spécifique aux QR codes.

Licence commerciale ImageSharp : Code-barres net dépend de SixLabors.ImageSharp, qui utilise une licence commerciale scindée. Le niveau gratuit s'applique aux projets open source et aux entreprises dont le chiffre d'affaires annuel est inférieur à un seuil défini ; au-delà de ce seuil, une licence commerciale est requise. Cette condition est intégrée à la chaîne de dépendances transitives et n'est pas mise en évidence par NuGet lors de l'installation. Une entreprise de vente au détail ou de logistique traitant des codes-barres à grande échelle — précisément le cas d'utilisation ciblé par Code-barres net — peut fonctionner au-delà du seuil sans avoir évalué son obligation.

Accumulation de plusieurs bibliothèques : les projets qui utilisent QRCoder lorsque des codes QR sont nécessaires, puis ZXing .NET lorsque la lecture devient nécessaire, accumulent trois dépendances distinctes liées aux codes-barres. Chacune a son propre calendrier de publication, ses propres exigences en matière de version d'ImageSharp et sa propre API à maintenir. La consolidation dans une seule bibliothèque couvrant la génération, la lecture, les données 1D et 2D élimine le problème de la gestion des versions entre bibliothèques.

Le problème fondamental

Un projet qui débute avec le seul format Code-barres net et qui s'étend ensuite aux formats 2D aboutit à ce type d'importation fractionnée :

// Code-barres net for 1D — one library, one API
using NetBarcode;
var code128 = new Barcode("12345", Type.Code128);
code128.SaveImageFile("label.png");

// QRCoder added separately for QR — second library, second API
using QRCoder;
var qrGenerator = new QRCodeGenerator();
var qrData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M);
var png = new PngByteQRCode(qrData).GetGraphic(20);
File.WriteAllBytes("qr.png", png);
C#

Après la migration vers IronBarcode, les deux mêmes résultats proviennent d'une seule importation :

using IronBarCode;

BarcodeWriter.CreateBarcode("12345", BarcodeEncoding.Code128)
    .SaveAsPng("label.png");

BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

Comparaison des fonctionnalités Code-barres IronBarcode et de NetBarcode

FonctionCode-barres netCode-barres IronBarcode
génération de codes-barres 1DOuiOui
Génération de codes-barres 2D (QR, DataMatrix, PDF417, Aztec)NonOui
Lecture de codes-barres à partir d'imagesNonOui
Lecture de codes-barres à partir de documents PDFNonOui
Nombre de formats 1D1130+
Nombre de formats 2D08+
Symbologie totale1150 ans et plus
GS1-128, GS1 DataBarNonOui
Formats postauxNonOui
Sortie SVGNonOui
Traitement par lotsManuelIntégré
Dépendance d'ImageSharpOui (licence partagée)Non
Soutien commercialCommunautéProfessional
Modèle de licenceMIT (+ conditions ImageSharp)Commercial

Démarrage rapide : Migration de Code-barres net vers IronBarcode

Étape 1 : Remplacer le package NuGet

Supprimez Code-barres net et sa dépendance transitive ImageSharp :

dotnet remove package NetBarcode
dotnet remove package SixLabors.ImageSharp
SHELL

Notez que SixLabors.ImageSharp peut réapparaître dans la liste des packages restaurés si d'autres packages du projet s'y réfèrent également de manière transitive. Après la suppression, exécutez dotnet list package --include-transitive pour confirmer si ImageSharp reste et si sa condition de licence commerciale s'applique toujours au projet.

Étape 2 : Ajouter un IronBarcode

dotnet add package IronBarcode
SHELL

Le nom du package NuGet est IronBarcode; le namespace utilisé dans le code est IronBarCode (notez le C majuscule).

Étape 3 : Mise à jour des espaces de noms et initialisation de la licence

Remplacez les anciennes directives using dans tous les fichiers contenant des appels NetBarcode :

// Retirer these:
// using NetBarcode;
// using SixLabors.ImageSharp;
// using SixLabors.ImageSharp.PixelFormats;
// using SixLabors.Fonts;

// Add this:
using IronBarCode;
C#

Ajoutez l'initialisation de la licence une seule fois au démarrage de l'application — dans Program.cs, Startup.cs, ou le point d'entrée du projet :

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Une clé d'essai gratuite est disponible pour évaluation ; L'achat d'une licence supprime le filigrane d'essai des images de codes-barres générées.

Exemples de migration de code

Génération Code128

Le modèle d'utilisation le plus courant de Code-barres net se traduit directement en Code-barres IronBarcode moyennant un changement de constructeur en méthode statique et un renommage de méthode.

Approche NetBarcode :

using NetBarcode;

var barcode = new Barcode("12345678901234", Type.Code128);
barcode.SaveImageFile("shipping-label.png");

Approche IronBarcode :

using IronBarCode;

BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

Le constructeur new Barcode(data, Type.X) devient BarcodeWriter.CreateBarcode(data, BarcodeEncoding.X). La méthode SaveImageFile() devient SaveAsPng(), SaveAsJpeg(), ou SaveAsWindowsBitmap() selon le format de sortie requis. Toutes les options de génération de codes-barres 1D disponibles sont documentées dans les guides pratiques Code-barres IronBarcode .

EAN-13

Les types de codes-barres des produits de détail sont directement mappés entre les bibliothèques grâce à un renommage constant et un renommage de méthode.

Approche NetBarcode :

using NetBarcode;

var ean13 = new Barcode("5901234123457", Type.EAN13);
ean13.SaveImageFile("product-ean.png");

Approche IronBarcode :

using IronBarCode;

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product-ean.png");

Les noms des constantes d'encodage correspondent à ceux des membres de l'énumération Type de Code-barres net lorsque des équivalents directs existent. Notez que UPC-A (Type.UPCA), UPC-E (Type.UPCE), ITF (Type.ITF), et MSI (Type.MSI) ne font pas partie de l'énumération Type de Code-barres net — si ces formats sont nécessaires, Code-barres IronBarcode les prend en charge nativement via BarcodeEncoding.UPCA, BarcodeEncoding.UPCE, BarcodeEncoding.ITF et BarcodeEncoding.MSI.

GetImage() vers ToPngBinaryData()

La méthode GetImage() de Code-barres net retourne SixLabors.ImageSharp.Image<Rgba32>, ce qui nécessite des importations explicites d'ImageSharp dans le code appelant et lie la logique en aval à l'API ImageSharp. Code-barres IronBarcode expose des méthodes de sortie binaire et de flux directement sur l'objet GeneratedBarcode, éliminant ainsi totalement la dépendance à ImageSharp du code appelant.

Approche NetBarcode :

using NetBarcode;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

var barcode = new Barcode("12345", Type.Code128);
Image<Rgba32> image = barcode.GetImage();

using var stream = new MemoryStream();
image.SaveAsPng(stream);
byte[] bytes = stream.ToArray();

Approche IronBarcode :

using IronBarCode;

var barcode = BarcodeWriter.CreateBarcode("12345", BarcodeEncoding.Code128);

// Retrieve bytes directly — no ImageSharp type in calling code
byte[] bytes = barcode.ToPngBinaryData();

// Or write to a stream directly
using var stream = new MemoryStream();
barcode.SaveAsPng(stream);

Le code qui effectuait d'autres manipulations ImageSharp sur le résultat Image<Rgba32> — redimensionnement, composition, conversion de format — devra évaluer ces opérations individuellement, car Code-barres IronBarcode n'expose pas d'objet ImageSharp.

Remplacement simultané de Code-barres net et QRCoder

Les projets utilisant Code-barres net en parallèle de QRCoder peuvent remplacer les deux simultanément. La génération 2D d'IronBarcode utilise la même méthode BarcodeWriter.CreateBarcode que sa génération 1D ; seule la constante BarcodeEncoding diffère. Consultez le guide de génération de codes-barres 2D pour connaître les options d'encodage et de configuration.

Approche Code-barres net et QRCoder :

using NetBarcode;
using QRCoder;

// 1D with NetBarcode
var code128 = new Barcode("12345", Type.Code128);
code128.SaveImageFile("label.png");

// QR with QRCoder
var qrGenerator = new QRCodeGenerator();
var qrData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M);
var qrCode = new PngByteQRCode(qrData);
File.WriteAllBytes("qr.png", qrCode.GetGraphic(20));

Approche IronBarcode :

using IronBarCode;

// 1D — same API as 2D
BarcodeWriter.CreateBarcode("12345", BarcodeEncoding.Code128)
    .SaveAsPng("label.png");

// QR — change the encoding constant, nothing else
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Additional 2D formats available with no further imports
BarcodeWriter.CreateBarcode("01034531200000111719112510ABCD1234", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-label.png");

Ajout de la capacité de lecture

Si le projet utilisait également ZXing .NET pour la lecture, cette dépendance peut être supprimée en même temps que NetBarcode. IronBarcode's BarcodeReader gère les images et les documents PDF avec détection de format automatique.

Approche ZXing .NET :

using ZXing;
using ZXing.Common;
using ZXing.Rendering;

var reader = new BarcodeReaderGeneric();
reader.Options = new DecodingOptions { TryHarder = true };

// Bitmap loading and format-specific handling required before decode call

Approche IronBarcode :

using IronBarCode;

// Read from an image file — automatic format detection
var imageResults = BarcodeReader.Read("shipping-label.png");
foreach (var r in imageResults)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

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

La documentation complète relative aux options de lecture est disponible dans le guide de lecture des codes-barres à partir d'images , et couvre le réglage de la vitesse, la détection de plusieurs codes-barres et les paramètres de correction d'image.

Référence de correspondance entre l'API Code-barres net et IronBarcode

Code-barres netCode-barres IronBarcodeNotes
new Barcode(data, Type.Code128)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)Constructeur → méthode statique
new Barcode(data, Type.EAN13)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN13)Mappage direct
new Barcode(data, Type.Code39)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code39)Mappage direct
new Barcode(data, Type.EAN8)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN8)Mappage direct
new Barcode(data, Type.Codabar)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Codabar)Mappage direct
new Barcode(data, Type.Code93)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code93)Mappage direct
barcode.SaveImageFile("x.png").SaveAsPng("x.png")renommer la méthode
barcode.SaveImageFile("x.jpg").SaveAsJpeg("x.jpg")renommer la méthode
barcode.GetImage()Image<Rgba32>.ToPngBinaryData() ou .SaveAsPng()Aucun type ImageSharp exposé
Pas de Type.QRCodeBarcodeEncoding.QRCodeNouvelle capacité
Pas de Type.DataMatrixBarcodeEncoding.DataMatrixNouvelle capacité
Pas de Type.PDF417BarcodeEncoding.PDF417Nouvelle capacité
Pas de Type.AztecBarcodeEncoding.AztecNouvelle capacité
API de lecture indisponibleBarcodeReader.Read(path)Nouvelle capacité
using NetBarcode;using IronBarCode;remplacement d'espace de noms
using SixLabors.ImageSharp;RetirerPlus nécessaire
using SixLabors.ImageSharp.PixelFormats;RetirerPlus nécessaire
using SixLabors.Fonts;RetirerPlus nécessaire

La liste complète des constantes d'encodage se trouve dans le guide des formats de codes-barres pris en charge .

Problèmes de migration courants et solutions

Problème 1 : Une dépendance transitive ImageSharp persiste après la suppression du paquet

Problème : Après avoir exécuté dotnet remove package NetBarcode, dotnet restore montre que SixLabors.ImageSharp est toujours présent dans l'arborescence des dépendances car un autre package du projet y fait référence.

Solution : Exécutez dotnet list package --include-transitive pour identifier quel package attire encore ImageSharp. Si c'est seulement NetBarcode, supprimer la référence explicite du package et restaurer devrait le supprimer. Si un autre package est responsable, la dépendance ImageSharp de ce package et sa condition de licence commerciale restent sous le même angle indépendamment de la suppression de NetBarcode.

dotnet list package --include-transitive | grep -i imagesharp
SHELL

Numéro 2 : Image<Rgba32> Le type ne peut pas être résolu après la suppression

Problème : Après avoir supprimé le package SixLabors.ImageSharp, toute variable déclarée comme Image<Rgba32> ou paramètre typé comme SixLabors.ImageSharp.Image<Rgba32> produit une erreur de compilation car le type n'est plus disponible.

Solution : Remplacez chaque utilisation par la méthode de sortie Code-barres IronBarcode appropriée. Si la variable était utilisée pour obtenir des octets, remplacez-la par .ToPngBinaryData(). Si elle était écrite dans un flux, remplacez-la par .SaveAsPng(stream). Si elle était enregistrée dans un fichier, remplacez-la par .SaveAsPng(path).

// Before — requires SixLabors.ImageSharp reference
Image<Rgba32> img = barcode.GetImage();
img.SaveAsPng(stream);

// After — no external image type required
barcode.SaveAsPng(stream);

Problème 3 : v1.8 Contexte de changement majeur

Problème : Les bases de code qui ont été écrites contre Code-barres net avant v1.8 peuvent avoir des appels GetImage() qui ont stocké le résultat sans typage explicite, se fiant au type de retour interne pré-v1.8. Ces appels peuvent déjà être interrompus après une mise à jour de NetBarcode, indépendamment de la migration Code-barres IronBarcode .

Solution : Utilisez la migration vers Code-barres IronBarcode comme une opportunité de résoudre toute rupture préexistante de la v1.8 en même temps. Tous les sites d'appel GetImage() devraient être localisés par une recherche à l'échelle du projet et remplacés par la méthode de sortie appropriée d'IronBarcode pendant la passe de migration. Les commandes grep de la liste de contrôle de migration ci-dessous permettent d'identifier ces emplacements.

Liste de contrôle de migration NetBarcode

Pré-migration

Avant toute modification, veuillez vérifier l'ensemble de l'utilisation de NetBarcode :

grep -r "using NetBarcode" ./src
grep -r "new Barcode(" ./src
grep -r "Type\.Code128\|Type\.EAN13\|Type\.Code39\|Type\.EAN8" ./src
grep -r "Type\.Codabar\|Type\.Code93" ./src
grep -r "SaveImageFile(" ./src
grep -r "GetImage(" ./src
grep -r "using SixLabors\.ImageSharp" ./src
grep -r "Image<Rgba32>" ./src
SHELL
  • Identifiez tous les fichiers qui nécessitent une modification de la directive using.
  • Notez tous les sites d'appel GetImage() et comment l'objet Image<Rgba32> retourné est utilisé en aval
  • Vérifiez si QRCoder ou ZXing .NET sont présents et peuvent être supprimés en une seule passe.
  • Exécutez dotnet list package --include-transitive pour documenter l'état actuel de la dépendance ImageSharp avant la suppression
  • Obtenez une clé de licence Code-barres IronBarcode (une clé d'essai gratuite est disponible sans achat).

Mise à jour du code

  1. Exécutez dotnet remove package NetBarcode
  2. Exécutez dotnet remove package SixLabors.ImageSharp s'il n'est pas utilisé par d'autres paquets
  3. Exécutez dotnet add package IronBarcode
  4. Ajoutez IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; au démarrage de l'application
  5. Remplacez using NetBarcode; par using IronBarCode; dans chaque fichier concerné
  6. Supprimez using SixLabors.ImageSharp;, using SixLabors.ImageSharp.PixelFormats; et using SixLabors.Fonts; de tous les fichiers
  7. Traduisez chaque appel new Barcode(data, Type.X) en BarcodeWriter.CreateBarcode(data, BarcodeEncoding.X) en utilisant le tableau de correspondance de l'API
  8. Remplacez SaveImageFile() par SaveAsPng() ou la méthode spécifique au format appropriée
  9. Remplacez les appels GetImage() par ToPngBinaryData(), SaveAsPng() ou SaveAsPng(stream) selon le cas
  10. Si vous retirez QRCoder : remplacez les chaînes QRCodeGenerator + PngByteQRCode par BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)
  11. Si vous retirez ZXing.Net : remplacez la configuration du lecteur par BarcodeReader.Read(path)

Test de post-migration

  • Compilez le projet et vérifiez qu'il n'y a aucune erreur de compilation.
  • Exécuter les tests unitaires existants sur la sortie de code-barres générée
  • Vérifier visuellement les images des codes-barres pour s'assurer de la symbologie correcte et du contenu lisible
  • Vérifiez si le format de code QR a été ajouté lors de la migration.
  • Tester la fonctionnalité de lecture si la lecture de codes-barres a été ajoutée
  • Exécutez dotnet list package --include-transitive pour confirmer qu'ImageSharp n'est plus présent s'il a été supprimé
  • Vérifiez que l'initialisation de la clé de licence s'exécute avant la première opération de lecture de code-barres.

Principaux avantages de la migration vers IronBarcode

Couverture de format unifiée : Après migration, les codes QR, DataMatrix, PDF417, Aztec et tous les autres formats 2D sont disponibles via le même appel d'API utilisé pour Code128 et EAN-13. Aucune seconde bibliothèque n'est nécessaire lorsque les exigences de format s'élargissent, et la constante BarcodeEncoding est la seule chose qui change entre les types de format.

Lecture intégrée : BarcodeReader.Read() gère les fichiers image et les documents PDF avec détection automatique du format. Les projets qui nécessitaient auparavant ZXing .NET pour la lecture peuvent désormais supprimer cette dépendance et se consolider dans une seule bibliothèque de codes-barres, réduisant ainsi la surface d'API que les développeurs du projet doivent apprendre.

Aucune obligation ImageSharp : Code-barres IronBarcode ne dépend pas de SixLabors.ImageSharp. Après la migration, la condition de licence commerciale répartie intégrée dans les dépendances transitoires de Code-barres net ne s'applique plus au projet. Les revues de conformité des licences deviennent plus simples car les obligations de la bibliothèque de codes-barres sont indiquées directement et ne dépendent pas du seuil de revenu d'une bibliothèque de traitement d'images tierce.

API publique stable : Code-barres IronBarcode n'expose pas de types tiers dans son interface API publique. Le type de retour GeneratedBarcode de BarcodeWriter.CreateBarcode est le type propre à IronBarcode, ce qui signifie que les futures mises à jour du rendu interne d'IronBarcode ne produiront pas de changements de rupture dans le code appelant comme le changement de type v1.8 GetImage() de Code-barres net l'a fait.

Une seule dépendance à maintenir : le remplacement de NetBarcode, QRCoder et ZXing .NET par Code-barres IronBarcode réduit de trois cycles de mise à niveau, de trois ensembles de notes de version et de trois conflits de versions potentiels à un seul. À mesure que les versions de .NET évoluent et que les mises à jour des dépendances deviennent nécessaires, le travail de maintenance s'adapte à une seule bibliothèque au lieu de trois.

Veuillez noter: Les marques NetBarcode, QRCoder et ZXing.NET sont toutes des marques déposées de leurs propriétaires respectifs. Ce site n'est pas affilié, approuvé ou parrainé par NetBarcode, QRCoder ou ZXing.NET. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.
Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise