Passer de Barcode4NETà IronBarcode
Ce guide de migration explique comment supprimer une dépendance à Barcode4NETet la remplacer par IronBarcode, avec des instructions étape par étape, des comparaisons de code et des exemples pratiques pour les développeurs .NET qui entreprennent cette transition. Barcode4NETa atteint sa fin de vie sans annonce officielle : les nouvelles licences ne sont plus vendues, aucun package NuGet n'a jamais été publié et la bibliothèque fonctionne exclusivement sur .NET Framework. Ce guide est pratique et précis : il explique comment supprimer la référence à la DLL, installer Code-barres IronBarcode via NuGet et convertir le code de génération. Il couvre également les fonctionnalités de lecture et de traitement des fichiers PDF qui deviennent disponibles après la migration, et qui n'étaient pas du tout disponibles via Barcode4NET.
Pourquoi migrer depuis Barcode4NET?
Les équipes migrant depuis Barcode4NETsignalent les déclencheurs suivants de manière récurrente :
Aucune nouvelle licence disponible : les licences Barcode4NETne sont plus vendues par l'intermédiaire de ComponentSource ni d'aucun autre canal. Si un développeur rejoint une équipe utilisant Barcode4NET, il n'existe aucun mécanisme permettant de lui acheter une licence. Un entrepreneur rejoignant le projet ou un deuxième développeur devant travailler sur les fonctionnalités des codes-barres ne peut pas être légalement autorisé en vertu des conditions du produit d'origine.
Absence de package NuGet : il ne s'agit pas d'un simple désagrément, mais d'une incompatibilité fondamentale avec les flux de travail .NET modernes. Chaque développeur qui clone le dépôt doit savoir où se trouve la DLL. Les pipelines CI/CD doivent être configurés manuellement pour le localiser. La commande dotnet restore ne fait rien pour le résoudre. La DLL est soit intégrée au système de contrôle de version, soit conservée dans un espace de stockage d'artefacts privé, deux solutions qui nécessitent une maintenance manuelle continue.
Aucune prise en charge de .NET 5, 6, 7, 8 ou 9 : Barcode4NETcible exclusivement .NET Framework . Lorsque qu'une organisation met à niveau son framework cible vers net8.0, la compilation échoue car la bibliothèque était compilée contre des assemblies .NET Framework qui ne sont plus référencés. Aucun correctif n'est prévu. Si l'équipe doit passer à une version moderne de .NET pour des raisons de performance, de déploiement sous Linux ou Docker, ou pour bénéficier d'un support Microsoft à long terme, Barcode4NETconstitue un obstacle majeur.
Aucune mise à jour de sécurité : la bibliothèque est figée dans l'état où elle se trouvait lorsque son développement a cessé. Les problèmes de sécurité découverts depuis restent définitivement sans solution. Il n'y a pas de système de suivi des problèmes, pas de responsable de la maintenance à contacter, et pas de processus de réponse des fournisseurs.
Aucune correction de bug : si un problème d'affichage apparaît avec une variante de symbologie particulière ou un cas limite dans les dimensions du code-barres, il n'existe aucune solution. La bibliothèque ne sera pas mise à jour.
Le problème fondamental
Le moment de découverte le plus fréquent est celui où un développeur met à jour le framework cible lors d'un projet de modernisation .NET . La compilation échoue car la DLL de Barcode4NETa été compilée avec des assemblys .NET Framework qui ne sont plus disponibles sous la nouvelle cible. Le problème ne réside pas dans l'API de génération elle-même, mais dans la dépendance sous-jacente qui ne peut pas évoluer.
// 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);
// Code-barres 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);
Comparaison des fonctionnalités Code-barres IronBarcode et de Barcode4NET
| Fonction | Barcode4NET | Code-barres IronBarcode |
|---|---|---|
| Paquet NuGet | Non — DLL manuelle uniquement | Oui (IronBarcode) |
| Prise en charge du .NET Framework | Oui (.NET Framework uniquement) | Oui (.NET Framework 4.6.2+) |
| Prise en charge de .NET Core / .NET 5 et versions ultérieures | Non | Oui (.NET 5, 6, 7, 8, 9) |
| Prise en charge de Linux/macOS | Non | Oui |
| Prise en charge de Docker | Non | Oui |
| Azure / AWS Lambda | Non | Oui |
| génération de codes-barres | Oui | Oui |
| Lecture/scan des codes-barres | Non | Oui (BarcodeReader.Read()) |
| lecture de codes-barres PDF | Non | Oui (natif, sans bibliothèque supplémentaire) |
| Code QR avec logo | Non | Oui (AddBrandLogo()) |
| API chaînable fluide | Non | Oui |
| Maintenance active | Non (fin de vie) | Oui |
| Nouvelles licences disponibles | Non | Oui — Lite 749 $, Plus 1 499 $, Pro 2 999 $, Unlimited 5 999 $ |
| correctifs de sécurité | Non | Oui |
| intégration du pipeline CI/CD | Étapes de copie manuelle de la DLL | Standard dotnet restore |
Démarrage rapide : Migration de Barcode4NETvers IronBarcode
La migration peut commencer immédiatement grâce à ces étapes fondamentales.
Étape 1 : Remplacer le package NuGet
Barcode4NET n'a jamais été distribué comme package NuGet, donc il n'y a pas de commande dotnet remove package. Retirez-le manuellement.
Supprimez la DLL du contrôle de code source et préparez la suppression :
git rm -r ThirdParty/Barcode4NET/
Retirez l'élément <Reference> de chaque fichier .csproj. Recherchez dans toute la solution pour trouver chaque fichier qui doit être mis à jour :
grep -rl "Barcode4NET" --include="*.csproj" .
Retirez cet élément de chaque fichier .csproj qui le contient :
<Reference Include="Barcode4NET">
<HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
</Reference>
Installez ensuite IronBarcode:
dotnet add package IronBarcode
Cette simple commande ajoute Code-barres IronBarcode et résout toutes les dépendances. Aucune gestion des DLL, aucun stockage d'artefacts, aucune étape de copie manuelle.
Étape 2 : Mise à jour des espaces de noms
Remplacez l'ancienne directive using en haut de chaque fichier qui utilisait Barcode4NET:
// Before
using Barcode4NET;
// After
using IronBarCode;Imports Barcode4NET
' After
Imports IronBarCodeÉtape 3 : initialisation de la licence
Ajoutez l'initialisation de la licence au démarrage de l'application — dans Program.cs, Startup.cs, ou partout où votre application démarre :
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"Exemples de migration de code
Génération d'étiquettes de base
Le modèle Barcode4NETle plus courant : créer un objet, définir les propriétés, appeler GenerateBarcode() pour recevoir un Bitmap, puis l'enregistrer.
Approche Barcode4NET :
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 SubApproche IronBarcode :
// 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 SubLe bloc de définition des propriétés se réduit à une seule chaîne fluide. L'appel .ResizeTo() remplace les affectations de propriétés Width et Height. .SaveAsPng() remplace à la fois GenerateBarcode() et l'appel séparé barcodeImage.Save(). Pour plus d'options de génération, consultez la documentation sur la génération de codes-barres IronBarcode .
Affichage de la PictureBox WinForms
Si votre code Barcode4NETassignait directement la valeur de retour Bitmap à une PictureBox ou un contrôle similaire, vous chargerez à la place un tableau de bytes par le biais d'un MemoryStream.
Approche Barcode4NET :
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 SubApproche IronBarcode :
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 SubL'étape MemoryStream est la seule addition structurelle. Tout le reste est une traduction directe du modèle de définition de propriétés vers la chaîne fluide.
Génération de codes QR
Approche Barcode4NET :
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)Approche IronBarcode :
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 utilise une classe dédiée QRCodeWriter pour les codes QR, qui permet d'accéder à des options spécifiques aux QR telles que le niveau de correction d'erreurs et l'intégration du logo de marque. Le deuxième paramètre pour QRCodeWriter.CreateQrCode() est la taille en pixels de l'image carrée.
Ajout de la lecture des codes-barres
Barcode4NET ne disposait pas d'API de lecture. Si votre application traite des documents numérisés, vérifie les codes-barres générés ou extrait des données de factures PDF, cette fonctionnalité est disponible immédiatement après la migration, sans ajout de deuxième bibliothèque.
Approche Barcode4NET :
// Non reading API available in Barcode4NET.
// Required a separate library (e.g., ZXing.Net) to decode barcodes.
Approche IronBarcode :
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}")
NextLa lecture des fichiers PDF ne nécessite aucune bibliothèque supplémentaire. BarcodeReader.Read() gère à la fois les images et les entrées PDF nativement. Consultez la documentation relative à la lecture des codes-barres pour connaître les options de configuration, notamment la vitesse de lecture et la détection de plusieurs codes-barres.
Mise à niveau du cadre cible
Une fois Barcode4NETsupprimé, la contrainte liée au .NET Framework disparaît également. Mettez à jour l'élément TargetFramework dans votre .csproj :
Approche Barcode4NET :
<!-- Locked to .NET Framework to support Barcode4NET-->
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
Approche IronBarcode :
<!-- Upgrade freely — Code-barres IronBarcode supports net8.0 and later -->
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
IronBarcode prend en charge .NET Framework 4.6.2 à .NET 9, ce qui permet de mettre à niveau le framework cible vers n'importe quelle version choisie par votre organisation, sans aucune contrainte liée à une bibliothèque de codes-barres.
Contrôleur ASP.NET Core — Renvoi d'un code-barres sous forme de réponse image
Si vous modernisez simultanément une application Web Forms, voici le modèle ASP.NET Core pour renvoyer une image de code-barres à partir d'une action de contrôleur :
Approche Barcode4NET :
// Barcode4NETwas not compatible with ASP.NET Core.
// Web Forms HttpHandler was required for image delivery.
Approche IronBarcode :
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() renvoie un byte[] directement, qui s'intègre dans le résultat File() sans aucune conversion intermédiaire.
Référence de correspondance entre l'API Barcode4NETet IronBarcode
| Barcode4NET | Code-barres IronBarcode |
|---|---|
new Barcode4NET.Barcode() | BarcodeWriter.CreateBarcode(data, encoding) |
barcode.Symbology = Symbology.Code128 | BarcodeEncoding.Code128 (paramètre de CreateBarcode) |
barcode.Data = "ITEM-12345" | Premier paramètre de CreateBarcode() |
barCode.Width = 300 ; hauteur du code-barres = 100 | .ResizeTo(300, 100) |
barcode.GenerateBarcode() retourne Bitmap | .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 |
| Génération uniquement | Génération + lecture (BarcodeReader.Read()) |
| Prise en charge des fichiers PDF non disponible | BarcodeReader.Read("doc.pdf") natif |
Problèmes de migration courants et solutions
Problème 1 : Pas de dotnet remove package pour les références DLL
Barcode4NET : Comme Barcode4NETn'a jamais été un package NuGet , il n'existe aucune commande du gestionnaire de packages pour le supprimer. L'élément <Reference Include="Barcode4NET"> doit être retiré manuellement de chaque fichier .csproj, et le répertoire DLL doit être supprimé du contrôle de source explicitement.
Solution : Effectuez une recherche pour localiser tous les fichiers de projet qui référencent la DLL, puis supprimez les éléments manuellement :
grep -rn "Barcode4NET" --include="*.csproj" .
Ne laissez pas la référence DLL en place à côté de la nouvelle référence NuGet ; cela provoque des erreurs de compilation dues à une résolution de type ambiguë.
Problème 2 : Changement du type de retour, de Bitmap à tableau d'octets
Barcode4NET: GenerateBarcode() returns System.Drawing.Bitmap. Le code qui assigne la valeur de retour à une variable typée Bitmap ou la passe à toute méthode attendant un Bitmap — comme un PictureBox — doit être mis à jour.
Solution : Remplacez les affectations .GenerateBarcode() par .ToPngBinaryData() et chargez le tableau de bytes par un MemoryStream à l'endroit de l'appel :
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 UsingRechercher .GenerateBarcode() dans toute la solution localisera tous les endroits d'appel qui nécessitent une mise à jour.
Problème 3 : Modification de l'espace de noms de l'énumération de symbologie
Barcode4NET : Utilise Symbology.Code128, Symbology.QRCode, Symbology.Code39, et des valeurs similaires de l'espace de noms Barcode4NET.
Solution : Remplacez par des valeurs enum BarcodeEncoding. Tous les noms communs sont conservés — seul le nom du type change :
// 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()Un remplacement global de Symbology. par BarcodeEncoding. couvre la plupart des cas. Examinez chaque remplacement pour en confirmer le contexte.
Problème n° 4 : La largeur et la hauteur sont désormais une méthode, et non plus des propriétés.
Barcode4NET : La taille a été configurée comme deux affectations de propriétés distinctes : barcode.Width = 300 ; barCode.Height = 100;
Solution : Utilisez la méthode chaînée .ResizeTo(width, height). C'est suffisamment différent syntaxiquement pour qu'un simple recherche-et-remplace ne le capture pas — recherchez .Width = et .Height = dans le code lié aux codes-barres et mettez à jour chaque occurrence :
// 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)Liste de contrôle de migration Barcode4NET
Tâches préalables à la migration
Effectuez ces recherches sur votre solution avant de commencer. Ils offrent une image précise de l'ampleur de la migration :
# 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" .
Notez le nombre de fichiers pour chaque motif. Code de dessin basé sur les coordonnées du document, modèles d'utilisation des polices et toutes les étapes du script de compilation qui copient la DLL.
Tâches de mise à jour du code
- Supprimez
ThirdParty/Barcode4NET/du contrôle de source (git rm -r) - Retirez
<Reference Include="Barcode4NET">de tous les fichiers.csproj - Supprimez les étapes de copie manuelle des DLL des scripts de compilation et des fichiers de pipeline CI/CD
- Exécutez
dotnet add package IronBarcodepour chaque projet de la solution - Ajoutez
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";au démarrage de l'application - Remplacez
using Barcode4NET;parusing IronBarCode;dans tous les fichiers.cs - Remplacez les blocs
new Barcode4NET.Barcode()par des appelsBarcodeWriter.CreateBarcode() - Remplacez
Symbology.XparBarcodeEncoding.Xpartout - Remplacez
barcode.Width = N; barcode.Height = M;with.ResizeTo(N, M) - Remplacez les affectations
.GenerateBarcode()par.SaveAsPng()ou.ToPngBinaryData() - Mettez à jour les affectations de contrôle d'image
PictureBoxou autres pour utiliser le modèleMemoryStream - Mettez à jour
TargetFrameworkdans les fichiers.csprojsi vous passez denet4xx - Exécutez la compilation complète et corrigez les erreurs de compilation restantes.
Test de post-migration
- Comparer l'apparence du code-barres visuel à celle d'échantillons de référence.
- Vérifier que le matériel du lecteur de codes-barres peut lire les codes-barres générés à partir de toutes les symbologies concernées.
- Testez que les valeurs
BarcodeEncodingcorrespondent à la sortie attendue pour Code128, Code39, EAN-13, UPC-A, et Code QR - Vérifiez que le modèle
MemoryStreams'affiche correctement dans les contrôles WinForms où cela s'applique - Confirmez que le pipeline CI/CD se termine avec succès en utilisant uniquement
dotnet restoresans étapes manuelles de DLL - Testez la fonctionnalité de lecture de code-barres si
BarcodeReader.Read()a été ajouté dans le cadre de la migration
Principaux avantages de la migration vers IronBarcode
Possibilité rétablie d'octroyer des licences à de nouveaux membres d'équipe : Code-barres IronBarcode est un produit commercial actif avec des licences perpétuelles disponibles à des prix définis. Les nouveaux développeurs, sous-traitants et membres d'équipe peuvent obtenir une licence immédiatement. La situation où un développeur rejoint l'entreprise et ne peut légalement travailler sur du code lié aux codes-barres cesse d'exister.
Gestion standard des dépendances NuGet : Après la migration, dotnet restore gère tout. Les nouveaux développeurs clonent le dépôt, restaurent les paquets et compilent sans aucune connaissance de l'emplacement des DLL, des magasins d'artefacts ou des procédures de copie manuelle. Les frictions que la distribution de DLL de Barcode4NETengendrait dans chaque pipeline CI/CD et flux de travail d'intégration sont éliminées.
Liberté totale quant à la version .NET : la suppression de la contrainte Barcode4NETdébloque les projets de modernisation .NET . Le framework cible peut être mis à niveau vers .NET 8, .NET 9 ou des versions ultérieures sans aucune limitation de bibliothèque de codes-barres. Le déploiement Linux, la conteneurisation Docker et les environnements d'exécution sans serveur dans le cloud deviennent tous disponibles.
Lecture de code-barres sans seconde bibliothèque : BarcodeReader.Read() décode les codes-barres à partir d'images et de PDFs nativement. Les équipes qui utilisaient auparavant Barcode4NETpour la génération avec ZXing .NET ou une autre bibliothèque pour la lecture peuvent désormais se regrouper autour d'une seule dépendance maintenue. La lecture des codes-barres PDF ne nécessite aucune bibliothèque PDF supplémentaire.
Posture de sécurité et de conformité : Code-barres IronBarcode reçoit des correctifs de sécurité réguliers et est comparé aux bases de données CVE actuelles. Les audits de nomenclature logicielle ne feront plus apparaître Barcode4NETcomme une dépendance commerciale en fin de vie sans processus de réponse du fournisseur. Le problème de correction identifié par Barcode4NETlors des audits de sécurité est résolu dès que la migration est terminée.
Rythme de développement actif : Code-barres IronBarcode déploie des mises à jour régulières alignées sur les nouvelles versions de .NET . Les mises à jour de compatibilité pour les futures versions de .NET sont fournies par le package, donc la bibliothèque ne sera pas figée dans l'état qu'elle était quand un fournisseur s'est tu.

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.