IRONSOFTWAREHOME
VIDÉOS

Passer de Barcode4NETà IronBarcode

Curtis Chau
Curtis Chau
Updated: 3 mai 2026

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);
C#
// 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);
C#

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

FonctionBarcode4NETCode-barres IronBarcode
Paquet NuGetNon — DLL manuelle uniquementOui (IronBarcode)
Prise en charge du .NET FrameworkOui (.NET Framework uniquement)Oui (.NET Framework 4.6.2+)
Prise en charge de .NET Core / .NET 5 et versions ultérieuresNonOui (.NET 5, 6, 7, 8, 9)
Prise en charge de Linux/macOSNonOui
Prise en charge de DockerNonOui
Azure / AWS LambdaNonOui
génération de codes-barresOuiOui
Lecture/scan des codes-barresNonOui (BarcodeReader.Read())
lecture de codes-barres PDFNonOui (natif, sans bibliothèque supplémentaire)
Code QR avec logoNonOui (AddBrandLogo())
API chaînable fluideNonOui
Maintenance activeNon (fin de vie)Oui
Nouvelles licences disponiblesNonOui — Lite 749 $, Plus 1 499 $, Pro 2 999 $, Unlimited 5 999 $
correctifs de sécuritéNonOui
intégration du pipeline CI/CDÉtapes de copie manuelle de la DLLStandard 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/
SHELL

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" .
SHELL

Retirez cet élément de chaque fichier .csproj qui le contient :

<Reference Include="Barcode4NET">
  <HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
</Reference>
XML

Installez ensuite IronBarcode:

dotnet add package IronBarcode
SHELL

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;

É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";

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);
}

Approche 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);
}

Le 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();
}

Approche 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);
}

L'é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);

Approche IronBarcode :

using 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.
C#

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}");
}

La 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>
XML

Approche IronBarcode :

<!-- Upgrade freely — Code-barres IronBarcode supports net8.0 and later -->
<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
XML

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.
C#

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");
    }
}

.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

Barcode4NETCode-barres IronBarcode
new Barcode4NET.Barcode()BarcodeWriter.CreateBarcode(data, encoding)
barcode.Symbology = Symbology.Code128BarcodeEncoding.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.QRCodeBarcodeEncoding.QRCode
Symbology.Code39BarcodeEncoding.Code39
Symbology.EAN13BarcodeEncoding.EAN13
Symbology.UPCABarcodeEncoding.UPCA
<Reference Include="Barcode4NET"><PackageReference Include="IronBarcode" />
.NET Framework only.NET Framework 4.6.2 through .NET 9
Génération uniquementGénération + lecture (BarcodeReader.Read())
Prise en charge des fichiers PDF non disponibleBarcodeReader.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" .
SHELL

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);

Rechercher .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()

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);

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" .
SHELL

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

  1. Supprimez ThirdParty/Barcode4NET/ du contrôle de source (git rm -r)
  2. Retirez <Reference Include="Barcode4NET"> de tous les fichiers .csproj
  3. Supprimez les étapes de copie manuelle des DLL des scripts de compilation et des fichiers de pipeline CI/CD
  4. Exécutez dotnet add package IronBarcode pour chaque projet de la solution
  5. Ajoutez IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; au démarrage de l'application
  6. Remplacez using Barcode4NET; par using IronBarCode; dans tous les fichiers .cs
  7. Remplacez les blocs new Barcode4NET.Barcode() par des appels BarcodeWriter.CreateBarcode()
  8. Remplacez Symbology.X par BarcodeEncoding.X partout
  9. Remplacez barcode.Width = N; barcode.Height = M; with .ResizeTo(N, M)
  10. Remplacez les affectations .GenerateBarcode() par .SaveAsPng() ou .ToPngBinaryData()
  11. Mettez à jour les affectations de contrôle d'image PictureBox ou autres pour utiliser le modèle MemoryStream
  12. Mettez à jour TargetFramework dans les fichiers .csproj si vous passez de net4xx
  13. 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 BarcodeEncoding correspondent à la sortie attendue pour Code128, Code39, EAN-13, UPC-A, et Code QR
  • Vérifiez que le modèle MemoryStream s'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 restore sans é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
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