IRONSOFTWAREHOME
VIDEOS

Migrating from Neodynamic Barcode to IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 de agosto de 2026

Esta guía proporciona un camino completo de migración desde Neodynamic.SDK.Barcode y Neodynamic.SDK.BarcodeReader a IronBarcode. Abarca la eliminación de ambos paquetes de Neodynamic, la sustitución de la configuración de doble licencia por una sola clave, la traducción de las llamadas a la API de generación y lectura, y el proceso para obtener la capacidad de lectura de códigos de barras 2D que no era posible con el conjunto de productos de Neodynamic. Esta guía está escrita para desarrolladores que ya tienen código Neodynamic y necesitan un enfoque sistemático, archivo por archivo, para completar la migración.

¿Por qué migrar desde el código de barras neodinámico?

Brecha de lectura 2D: Neodynamic BarCode ProfessionalSDK genera códigos QR, DataMatrix, PDF417 y códigos de barras Aztec. Ninguno de esos formatos puede ser leído por el SDK de lector de códigos de barras complementario. Un proyecto que genera códigos QR para etiquetas de productos, contenedores de envío o seguimiento de documentos no puede leer esos mismos códigos a través del lector que compró junto con el generador. IronBarcode lee y genera códigos QR, DataMatrix, PDF417, Aztec y todos los demás formatos 2D compatibles a través de la misma biblioteca y la misma licencia.

Sobrepeso de Producto Dual: Cada proyecto que utiliza ambos Neodynamic SDKs lleva dos entradas PackageReference, dos directivas using, dos bloques de licencia, y dos ciclos de actualización separados. La sobrecarga se repite en cada máquina de desarrollador, en cada canalización de CI y en cada entorno de producción. La consolidación de dos paquetes con requisitos de mantenimiento independientes en una única dependencia con una sola licencia es el resultado práctico de esta migración.

El problema de la tercera biblioteca: Los equipos que se toparon con la brecha de lectura 2D y optaron por solucionarla en lugar de migrar, generalmente agregaron una tercera biblioteca —siendo ZXing .NET la opción más común— específicamente para cubrir la lectura de códigos QR. Esa decisión implica intercambiar una limitación por otra de complejidad: tres dependencias relacionadas con códigos de barras, cada una con sus propias restricciones de versión, sus propias notas de lanzamiento y su propio potencial de conflicto cuando se actualiza el entorno de ejecución de .NET o el marco de trabajo dependiente. IronBarcode reemplaza a los tres.

Complejidad de Precios: Neodynamic BarCode ProfessionalSDK se valora por desarrollador (Básico desde aproximadamente $352, Ultimate desde aproximadamente $705 a través de ComponentSource). El SDK Lector de Códigos de Barras tiene un costo separado. Un proyecto que necesita tanto generación como lectura 1D debe comprar ambos, y el costo combinado se escala con el tamaño del equipo por encima de la tarifa del Lector. Un proyecto que necesita lectura 2D aún no puede cumplir con ese requisito a cualquier precio dentro de la familia de productos de Neodynamic. IronBarcode Lite cubre la generación y lectura — 1D y 2D — bajo una sola licencia. Los precios actuales están en la página de licencias IronBarcode.

El problema fundamental

El problema fundamental en cualquier código fuente que utilizara ambos SDK de Neodynamic para un flujo de trabajo completo de códigos de barras es que la lectura de códigos QR nunca fue posible:

// Before: Lector de códigos de barras neodinámico does not support QR codes
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);

    // Results are always null or empty for 2D barcodes
    if (results == null || !results.Any())
    {
        throw new NotSupportedException(
            "Neodynamic Barcode Reader does not support QR codes");
    }

    return results.First().Value;
}
C#

Tras migrar a IronBarcode, la misma operación se convierte en una llamada de lectura estándar sin ningún manejo específico del formato:

// After: IronBarcode reads QR codes with the same call used for all formats
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}

Cada marcador throw new NotSupportedException(...) en un código fuente que hace referencia a la lectura de códigos de barras 2D se elimina durante esta migración y se reemplaza por una llamada de lectura funcional.

IronBarcode vs Neodynamic Barcode: Comparación de características

CaracterísticaNeodynamic BarCode ProfessionalLector de códigos de barras neodinámicoIronBarcode
Código 128, EAN-13, generación UPC-AN/A
Generación de código QR, DataMatrix y PDF417N/A
Lectura de códigos de barras 1DN/A
Lectura de código QRN/ANo
Lectura de DataMatrixN/ANo
Lectura del PDF417N/ANo
Lectura nativa de códigos de barras PDFNoNo
Detección automática de formatoN/ANo
Se requieren paquetes NuGet111 (cubre ambos)
Se requieren claves de licencia11 (separado)1 (cubre todos)
Dependencia de System.DrawingNo
Soporte para Linux/DockerLimitadoLimitado
Compatibilidad con .NET 8 / .NET 9Limitado
Lectura por lotes asíncronaNoNo

Inicio rápido: Migración de Neodynamic Barcode a IronBarcode

Paso 1: Eliminar ambos paquetes neodinámicos

Ambos paquetes deben ser retirados. No tienen dependencias compartidas que afecten el orden de eliminación:

dotnet remove package Neodynamic.SDK.Barcode
dotnet remove package Neodynamic.SDK.BarcodeReader
SHELL

Verifica que ambas entradas hayan sido eliminadas del archivo .csproj antes de continuar.

Paso 2: Añadir IronBarcode

dotnet add package IronBarcode
SHELL

Paso 3: Reemplazar la configuración de licencia dual

Elimine ambos bloques de licencia Neodynamic y sustitúyalos por una única asignación de clave IronBarcode . Esta asignación se realiza una vez al iniciar la aplicación — en Program.cs, Startup.cs, o en la raíz de composición de la aplicación:

// Before: two license blocks, two products
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;

BarcodeProfessional.LicenseOwner = "Your Company";
BarcodeProfessional.LicenseKey = "GEN-LICENSE-KEY";

Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Your Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-LICENSE-KEY";
// After: one key covers generation and reading across all formats
using IronBarCode;

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

Una vez verificada la migración, se pueden desactivar los archivos de configuración, las variables de entorno o los almacenes de secretos que contengan claves de licencia de Neodynamic.

Ejemplos de migración de código

Generación de un código de barras Code 128

Enfoque neodinámico:

using Neodynamic.SDK.Barcode;
using System.Drawing.Imaging;

public void GenerateCode128(string data, string outputPath)
{
    var barcode = new BarcodeProfessional();
    barcode.Code = data;
    barcode.Symbology = Symbology.Code128;
    barcode.BarcodeUnit = BarcodeUnit.Pixel;

    System.Drawing.Image image = barcode.GetBarcodeImage();
    image.Save(outputPath, ImageFormat.Png);
}

Enfoque de IronBarcode :

using IronBarCode;

public void GenerateCode128(string data, string outputPath)
{
    BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .SaveAsPng(outputPath);
}

La importación System.Drawing.Imaging ya no es necesaria. La instancia BarcodeInfo y sus asignaciones de propiedades se colapsan en una única llamada de método. Para obtener información sobre las opciones de tamaño, anotación y formato de salida, consulte la guía para crear códigos de barras 1D .

Generación de un código QR

Enfoque neodinámico:

using Neodynamic.SDK.Barcode;

public void GenerateQrCode(string data, string outputPath)
{
    var barcode = new BarcodeProfessional();
    barcode.Code = data;
    barcode.Symbology = Symbology.QRCode;
    barcode.QRCodeECL = QRCodeErrorCorrectionLevel.H;

    barcode.GetBarcodeImage().Save(outputPath, System.Drawing.Imaging.ImageFormat.Png);
}

Enfoque de IronBarcode :

using IronBarCode;

public void GenerateQrCode(string data, string outputPath)
{
    QRCodeWriter.CreateQrCode(data, 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
        .SaveAsPng(outputPath);
}

La traducción de la generación solo cambia la superficie de la API. La diferencia fundamental que introduce esta migración es que la misma aplicación ahora también puede leer los códigos QR que genera, a través de la misma biblioteca IronBarcode y la misma licencia. Para obtener información completa sobre la creación de códigos de barras 2D, consulte la guía para la creación de códigos de barras 2D .

Lectura de códigos de barras 1D

Enfoque neodinámico:

using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string[] Read1DBarcodes(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);
    return results?.Select(r => r.Value).ToArray() ?? Array.Empty<string>();
}

Enfoque de IronBarcode :

using IronBarCode;

public string[] Read1DBarcodes(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.Select(r => r.Value).ToArray();
}

La construcción Bitmap y la importación System.Drawing se eliminan. IronBarcode acepta la ruta del archivo directamente. El nombre de la propiedad result.Value es el mismo en ambas APIs, por lo que el código descendente que procesa los valores devueltos no cambia. Para obtener información sobre las opciones de lectura y preprocesamiento de imágenes con múltiples códigos de barras, consulte la guía de lectura de códigos de barras a partir de imágenes .

Lectura de códigos QR (antes imposible)

Enfoque neodinámico:

// This method could not be implemented with Neodynamic Barcode Reader
public string ReadQrCode(string imagePath)
{
    throw new NotSupportedException(
        "Neodynamic Barcode Reader does not support QR codes");
}

Enfoque de IronBarcode :

using IronBarCode;

public string ReadQrCode(string imagePath)
{
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}

Cada marcador throw new NotSupportedException(...) que hace referencia a la lectura de códigos de barras 2D se convierte en una llamada de lectura estándar. El cuerpo del método cambia de una excepción lanzada a una implementación funcional. Los códigos QR no requieren ningún tratamiento especial. IronBarcode identifica el formato automáticamente.

Lectura de códigos de barras en documentos PDF (Nueva función)

Enfoque neodinámico:

// Neodynamic Reader cannot read barcodes from PDF files directly
// An image extraction step using a separate library was required before reading
// No direct equivalent exists

Enfoque de IronBarcode :

using IronBarCode;

public void ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);

    foreach (var result in results)
    {
        Console.WriteLine($"Value: {result.Value} | Format: {result.Format} | Page: {result.PageNumber}");
    }
}

IronBarcode lee los códigos de barras directamente de los documentos PDF en todas las páginas. En el resultado se devuelve el número de página en la que se encontró cada código de barras. Esta funcionalidad no requiere ninguna biblioteca adicional ni ningún paso intermedio de extracción de imágenes.

Referencia de mapeo de la API de códigos de barras neodinámicos a IronBarcode

API neodinámicaEquivalente de IronBarcodeNotas
BarcodeInfo.LicenseOwner = "..."IronBarCode.License.LicenseKey = "key"Fusionado en una sola clave
BarcodeInfo.LicenseKey = "..."(part of single key above)No hay un campo de propietario separado
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner(removed)No es necesario
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey(removed)No es necesario
new BarcodeInfo()BarcodeWriter.CreateBarcode(data, encoding)Estático, sin instancia
barcode.Value = dataPrimer parámetro de CreateBarcodeAprobado en construcción
barcode.Symbology = Symbology.Code128BarcodeEncoding.Code128Segundo parámetro
barcode.Symbology = Symbology.QRCodeBarcodeEncoding.QRCodeAhora se admite el viaje de ida y vuelta completo.
barcode.QRCodeECL = QRCodeErrorCorrectionLevel.HQRCodeWriter.QrErrorCorrectionLevel.HighestPunto de entrada de clase diferente
barcode.GetImage().Save(path, ImageFormat.Png).SaveAsPng(path)Fluido, sin enumeración ImageFormat
BarcodeReader.Read(bitmap)BarcodeReader.Read(imagePath)La ruta del archivo reemplaza al mapa de bits.
result.Valueresult.ValueMismo nombre de propiedad
Symbology.DataMatrixBarcodeEncoding.DataMatrixGeneración solamente → generación y lectura
throw new NotSupportedException(...) para la lectura 2DBarcodeReader.Read(imagePath)Reemplazar con una implementación funcional

Problemas comunes de migración y soluciones

Problema 1: Orden de retirada de dos paquetes

Problema: Si los desarrolladores eliminan solo un paquete Neodynamic y dejan el otro, se producen errores de compilación porque los dos SDK no comparten tipos, pero algunos archivos fuente pueden importar ambos espacios de nombres en el mismo archivo.

Solución: Elimine ambos paquetes antes de realizar cualquier cambio en el código fuente. Después de que ambos sean eliminados, busca todas las directivas using Neodynamic.SDK.Barcode y using Neodynamic.SDK.BarcodeReader y elimínalas juntas:

dotnet remove package Neodynamic.SDK.Barcode
dotnet remove package Neodynamic.SDK.BarcodeReader
SHELL

Luego, audita con:

grep -r "Neodynamic.SDK" --include="*.cs" .
SHELL

Problema 2: Limpieza de la configuración de licencia dual

Problema: Los dos bloques de licencia de Neodynamic a menudo aparecen en diferentes ubicaciones: uno en la clase de inicio de la aplicación y otro en un inicializador de servicio. Si solo se elimina un bloque, el código restante hace referencia a un espacio de nombres que ya no existe y no se compila.

Solución: Busque las cuatro asignaciones de propiedades de licencia de Neodynamic y elimínelas todas juntas antes de agregar la clave IronBarcode :

grep -r "LicenseOwner\|LicenseKey" --include="*.cs" .
SHELL

Reemplace las cuatro líneas con una sola asignación:

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

Problema 3: Eliminación de NotSupportedException de los bloques Catch.

Problema: Algunas bases de código que utilizaron Neodynamic Reader agregaron bloques catch (NotSupportedException) específicamente para manejar la falla silenciosa de las lecturas de códigos de barras 2D. Esos bloques catch deben eliminarse junto con el código de lanzamiento; de lo contrario, la cláusula catch hace referencia a una ruta de código que ya no puede ocurrir.

Solución: Busca NotSupportedException en archivos relacionados con códigos de barras y revisa cada ocurrencia. Si la excepción se generó en respuesta a un intento de lectura de formato 2D, elimine tanto el throw como el catch:

grep -r "NotSupportedException" --include="*.cs" .
SHELL

Reemplaza el cuerpo del método lanzador con BarcodeReader.Read(imagePath) y elimina la cláusula catch correspondiente de cualquier llamador.

Lista de verificación para la migración de códigos de barras neodinámicos

Pre-Migración

  • Busca todas las referencias a paquetes Neodynamic: grep -r "Neodynamic.SDK" --include="*.csproj" .
  • Busca todas las directivas de uso de Neodynamic: grep -r "using Neodynamic" --include="*.cs" .
  • Buscar ubicaciones de configuración de licencia: grep -r &quot;LicenseOwner\|LicenseKey&quot; --include=&quot;*.cs&quot; .
  • Busca todos los sitios de instanciación BarcodeInfo: grep -r "new BarcodeInfo\(\)" --include="*.cs" .
  • Busca todas las llamadas de lectura de Neodynamic: grep -r "BarcodeReader.Read" --include="*.cs" .
  • Busca todos los usos NotSupportedException en las rutas de código de barras: grep -r "NotSupportedException" --include="*.cs" .
  • Identifique cualquier biblioteca de terceros (ZXing .NET o similar) que se haya agregado específicamente para cubrir la brecha de lectura 2D; esta se puede eliminar después de la migración.
  • Registre todas las claves de licencia de Neodynamic para que puedan ser desactivadas de los almacenes de secretos después de la verificación.

Tareas de actualización de código

  1. Ejecuta dotnet remove package Neodynamic.SDK.Barcode
  2. Ejecuta dotnet remove package Neodynamic.SDK.BarcodeReader
  3. Ejecuta dotnet add package IronBarcode
  4. Elimina todas las directivas using Neodynamic.SDK.Barcode y using Neodynamic.SDK.BarcodeReader
  5. Agrega using IronBarCode en todos los archivos que realizan operaciones de códigos de barras
  6. Elimine ambos bloques de configuración de licencia de Neodynamic.
  7. Agrega IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" una vez al iniciar la aplicación
  8. Reemplaza new BarcodeInfo() + asignaciones de propiedades + barcode.GetImage().Save(...) con BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path)
  9. Reemplaza los patrones QRCodeWriter adecuadamente usando QRCodeWriter.CreateQrCode()
  10. Reemplaza las llamadas BarcodeReader.Read(bitmap) eliminando la construcción new Bitmap(imagePath) y pasando la ruta de archivo directamente a BarcodeReader.Read(imagePath)
  11. Elimina todos los marcadores throw new NotSupportedException(...) para la lectura 2D y reemplázalos con BarcodeReader.Read(imagePath)
  12. Elimina los bloques correspondientes catch (NotSupportedException) de los llamadores
  13. Elimine cualquier biblioteca de terceros que se haya agregado únicamente para cubrir la brecha de lectura 2D neodinámica.

Pruebas posteriores a la migración

  • Verifique que la generación del código de barras Code 128 produzca una salida que coincida con las dimensiones y la configuración de DPI anteriores.
  • Verificar que la generación del código QR produzca una salida escaneable.
  • Verificar que la lectura del código de barras 1D devuelva los mismos valores que la implementación anterior del lector Neodynamic.
  • Verifica que la lectura de códigos QR tenga éxito en imágenes que previamente lanzaban NotSupportedException
  • Verifique que la lectura de DataMatrix y PDF417 se haya realizado correctamente si esos formatos aparecen en la entrada de la aplicación.
  • Pruebe la lectura de códigos de barras PDF si la aplicación procesa documentos PDF.
  • Confirme que se hayan eliminado todas las referencias a la clave de licencia de Neodynamic de los archivos de configuración y las variables de entorno.
  • Confirme que la biblioteca 2D de terceros (si la había) se haya eliminado por completo y que ninguna importación restante haga referencia a ella.

Principales ventajas de migrar a IronBarcode

Capacidad unificada de lectura y escritura: tras la migración, toda la simbología que IronBarcode puede generar también se puede leer a través de la misma biblioteca. Se elimina la asimetría entre el generador y el lector de Neodynamic, donde se podían producir códigos QR, DataMatrix, PDF417 y Aztec, pero no consumir. Las aplicaciones que antes requerían una solución alternativa o una biblioteca externa para la lectura de datos 2D ahora cuentan con esa capacidad sin necesidad de ningún trabajo de integración adicional.

Administración de licencia única: Un paquete NuGet , una clave de licencia y un bloque de configuración reemplazan dos suscripciones de producto separadas. La renovación, la rotación de piezas clave y la gestión de las variables ambientales se vuelven la mitad de complejas. La reducción de los gastos administrativos es un proceso continuo, no una ganancia puntual.

Lectura nativa de códigos de barras en PDF: IronBarcode lee los códigos de barras directamente de los documentos PDF y devuelve los metadatos del número de página junto con los valores del código de barras. Las aplicaciones que procesan manifiestos de envío, documentos de facturación o historiales médicos que contienen códigos de barras integrados ya no requieren un paso intermedio de extracción de imágenes ni una biblioteca PDF adicional para admitir la lectura de códigos de barras. Consulte la lista completa de formatos de código de barras compatibles para conocer el conjunto completo de simbologías y tipos de entrada incluidos.

Eliminación de Dependencia de System.Drawing: Los SDKs de Neodynamic dependen de System.Drawing, lo que requiere una configuración adicional de librerías nativas en Linux y en contenedores Docker. IronBarcode no lleva ninguna dependencia System.Drawing, lo que significa que el mismo conjunto de código se ejecuta en Windows, Linux, y en entornos de nube en contenedores sin cambios específicos de plataforma.

Coste de licencia simplificado para una funcionalidad completa: Un proyecto que necesitaba tanto los SDK de Neodynamic como una tercera biblioteca para la lectura 2D estaba pagando por tres dependencias para lograr lo que IronBarcode proporciona con una sola licencia. Para proyectos que requieren generación y lectura 2D, la migración consolida tanto la infraestructura técnica como el coste de las licencias en un único producto comercial. La información sobre precios actual está disponible en la página de licencias de IronBarcode .

Por favor nota: Neodynamic y ZXing.NET son marcas registradas de sus respectivos propietarios. Este sitio no está afiliado con, ni es respaldado ni patrocinado por Neodynamic ni ZXing.NET. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son solo para fines informativos y reflejan información públicamente disponible en el momento de la redacción.
Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta