IRONSOFTWAREHOME
VÍDEOS

Migrando de Neodynamic Barcode para IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 de agosto de 2026

Este guia fornece um caminho completo de migração de Neodynamic.SDK.Barcode e Neodynamic.SDK.BarcodeReader para IronBarcode. Abrange a remoção de ambos os pacotes Neodynamic, a substituição da configuração de licença dupla por uma única chave, a tradução das chamadas de API de geração e leitura e o processo de obtenção da capacidade de leitura de código de barras 2D, que não era possível com o conjunto de produtos Neodynamic. Este guia foi escrito para desenvolvedores que já possuem código Neodynamic e precisam de uma abordagem sistemática, arquivo por arquivo, para concluir a migração.

Por que migrar do código de barras neodinâmico?

Lacuna de leitura 2D: O SDK Professional de código de barras neodinâmico gera códigos de barras QR Code, DataMatrix, PDF417 e Aztec. Nenhum desses formatos pode ser lido pelo SDK de leitor de código de barras complementar. Um projeto que gera códigos QR para etiquetas de produtos, contêineres de transporte ou rastreamento de documentos não consegue ler esses mesmos códigos através do leitor que adquiriu juntamente com o gerador. O IronBarcode lê e gera códigos QR, DataMatrix, PDF417, Aztec e todos os outros formatos 2D suportados, utilizando a mesma biblioteca e a mesma licença.

Sobrecarga de Produto Duplo: Todo projeto que utiliza ambos os SDKs da Neodynamic possui duas entradas PackageReference, duas diretivas using, dois blocos de licença e dois ciclos de atualização separados. A sobrecarga se repete em todas as máquinas de desenvolvedores, em todos os pipelines de CI e em todos os ambientes de produção. Consolidar dois pacotes com requisitos de manutenção distintos em uma única dependência com uma única licença é o resultado mecânico dessa migração.

O Problema da Terceira Biblioteca: As equipes que se depararam com a lacuna na leitura 2D e optaram por contorná-la em vez de migrar, normalmente adicionavam uma terceira biblioteca — sendo o ZXing .NET a escolha mais comum — especificamente para lidar com a leitura de códigos QR. Essa decisão troca uma limitação por uma complexidade diferente: três dependências relacionadas a códigos de barras, cada uma com suas próprias restrições de versão, suas próprias notas de lançamento e seu próprio potencial de conflito quando o runtime do .NET ou a estrutura dependente for atualizada.IronBarcode substitui todos os três.

Complexidade de Preços: O Professional de código de barras neodinâmico SDK é precificado por desenvolvedor (Básico a partir de aproximadamente $352, Ultimate a partir de aproximadamente $705 via ComponentSource). O SDK do Leitor de Código de Barras tem um custo separado. Um projeto que precisa tanto da geração quanto da leitura de 1D deve adquirir ambos, e o custo combinado escala com o tamanho da equipe além da taxa do Leitor. Um projeto que precisa de leitura 2D ainda não pode atender a esse requisito a qualquer preço dentro da família de produtos Neodynamic.IronBarcode Lite cobre geração e leitura — 1D e 2D — sob uma única licença. Os preços atuais estão na página de licenciamento do IronBarcode.

O problema fundamental

A principal questão em qualquer código-fonte que utilizasse os dois SDKs da Neodynamic para um fluxo de trabalho completo de código de barras era que a leitura de códigos QR nunca foi possível:

// Before: Leitor de código 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#

Após a migração para o IronBarcode, a mesma operação se torna uma chamada de leitura padrão, sem tratamento específico de 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;
}
C#

Todo espaço reservado throw new NotSupportedException(...) em um código base que referencia a leitura de código de barras 2D é removido durante esta migração e substituído por uma chamada de leitura funcional.

##IronBarcode vs Neodynamic Barcode: Comparação de Recursos

RecursoProfessional de código de barras neodinâmicoLeitor de código de barras neodinâmicoIronBarcode
Geração de código 128, EAN-13 e UPC-ASimN / DSim
Geração de código QR, DataMatrix e PDF417SimN / DSim
Leitura de código de barras 1DN / DSimSim
Leitura de código QRN / DNãoSim
Leitura de DataMatrixN / DNãoSim
Leitura PDF417N / DNãoSim
Leitura nativa de código de barras em PDFNãoNãoSim
Detecção automática de formatoN / DNãoSim
Pacotes NuGet necessários111 (abrange ambos)
Chaves de licença necessárias11 (separado)1 (abrange tudo)
Dependência de desenho do sistemaSimSimNão
Suporte para Linux/DockerLimitadoLimitadoSim
Suporte para .NET 8 / .NET 9SimLimitadoSim
Leitura em lote assíncronaNãoNãoSim

Guia rápido: Migração de código de barras Neodynamic para IronBarcode

Passo 1: Remova ambos os pacotes neodinâmicos

Ambas as embalagens devem ser removidas. Eles não possuem dependências em comum que afetem a ordem de remoção:

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

Verifique se ambas as entradas foram removidas do arquivo .csproj antes de prosseguir.

Passo 2: Adicionar IronBarcode

dotnet add package IronBarcode
SHELL

Etapa 3: Substituir a configuração de licença dupla

Remova os dois blocos de licença Neodynamic e substitua-os por uma única atribuição de chave IronBarcode. Esta atribuição é feita uma vez na inicialização do aplicativo — em Program.cs, Startup.cs, ou na raiz de composição do aplicativo:

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

Quaisquer arquivos de configuração, variáveis ​​de ambiente ou repositórios de segredos que contenham chaves de licença do Neodynamic podem ser desativados após a verificação da migração.

Exemplos de migração de código

Gerando um código de barras Code 128

Abordagem neodinâmica:

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

Abordagem do IronBarcode:

using IronBarCode;

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

A importação System.Drawing.Imaging não é mais necessária. A instância BarcodeInfo e suas atribuições de propriedades são condensadas em uma única chamada de método. Para opções de dimensionamento, anotação e formato de saída, consulte o guia de criação de códigos de barras 1D .

Gerando um código QR

Abordagem neodinâmica:

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

Abordagem do IronBarcode:

using IronBarCode;

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

A tradução de geração altera apenas a superfície da API. A principal diferença introduzida por essa migração é que o mesmo aplicativo agora também pode ler os códigos QR que gera, por meio da mesma biblioteca IronBarcode e da mesma licença. Para obter instruções completas sobre a criação de códigos de barras 2D, consulte o guia de criação de códigos de barras 2D .

Leitura de códigos de barras 1D

Abordagem neodinâmica:

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

Abordagem do IronBarcode:

using IronBarCode;

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

A construção Bitmap e a importação System.Drawing são removidas. O IronBarcode aceita o caminho do arquivo diretamente. O nome da propriedade result.Value é o mesmo em ambas as APIs, portanto, o código subsequente que processa os valores retornados não muda. Para opções de leitura e pré-processamento de imagens com múltiplos códigos de barras, consulte o guia de leitura de códigos de barras a partir de imagens .

Leitura de códigos QR (antes impossível)

Abordagem neodinâmica:

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

Abordagem do IronBarcode:

using IronBarCode;

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

Todo espaço reservado throw new NotSupportedException(...) que referencia a leitura de código de barras 2D se torna uma chamada de leitura padrão. O corpo do método passa de uma exceção lançada para uma implementação funcional. Não é necessário nenhum cuidado especial com os códigos QR; O IronBarcode identifica o formato automaticamente.

Leitura de códigos de barras em documentos PDF (Nova funcionalidade)

Abordagem neodinâmica:

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

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

O IronBarcode lê códigos de barras diretamente de documentos PDF em todas as páginas. O número da página em que cada código de barras foi encontrado é retornado no resultado. Essa funcionalidade não requer nenhuma biblioteca adicional nem etapa intermediária de extração de imagem.

Referência de mapeamento da API Neodynamic Barcode para IronBarcode

API NeodinâmicaEquivalente ao IronBarcodeNotas
BarcodeInfo.LicenseOwner = "..."IronBarCode.License.LicenseKey = "key"Fundidas em uma única chave
BarcodeInfo.LicenseKey = "..."(part of single key above)Não há campo de proprietário separado
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner(removed)Não é necessário
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey(removed)Não é necessário
new BarcodeInfo()BarcodeWriter.CreateBarcode(data, encoding)Estático, sem instância
barcode.Value = dataPrimeiro parâmetro de CreateBarcodeAprovado na construção
barcode.Symbology = Symbology.Code128BarcodeEncoding.Code128Segundo parâmetro
barcode.Symbology = Symbology.QRCodeBarcodeEncoding.QRCodeAgora é possível viajar com ida e volta completas.
barcode.QRCodeECL = QRCodeErrorCorrectionLevel.HQRCodeWriter.QrErrorCorrectionLevel.HighestPonto de entrada de classe diferente
barcode.GetImage().Save(path, ImageFormat.Png).SaveAsPng(path)Fluente, sem enumeração ImageFormat
BarcodeReader.Read(bitmap)BarcodeReader.Read(imagePath)O caminho do arquivo substitui o Bitmap
result.Valueresult.ValueMesmo nome de propriedade
Symbology.DataMatrixBarcodeEncoding.DataMatrixGeração apenas → geração e leitura
throw new NotSupportedException(...) para leitura 2DBarcodeReader.Read(imagePath)Substitua por uma implementação funcional.

Problemas e soluções comuns em migrações

Problema 1: Ordem de Remoção de Dois Pacotes

Problema: Desenvolvedores que removem apenas um pacote do Neodynamic e deixam o outro instalado causam erros de compilação, pois os dois SDKs não compartilham tipos, mas alguns arquivos de origem podem importar ambos os namespaces no mesmo arquivo.

Solução: Remova ambos os pacotes antes de fazer qualquer alteração no código-fonte. Após ambas serem removidas, procure por todas as diretivas using Neodynamic.SDK.Barcode e using Neodynamic.SDK.BarcodeReader e remova-as juntas:

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

Em seguida, realize a auditoria com:

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

Problema 2: Limpeza da configuração de licença dupla

Problema: Os dois blocos de licença Neodynamic frequentemente aparecem em locais diferentes — um na classe de inicialização da aplicação e outro em um inicializador de serviço. Se apenas um bloco for removido, o código restante fará referência a um namespace que não existe mais e a compilação falhará.

Solução: Procure todas as quatro atribuições de propriedades da licença Neodynamic e remova-as em conjunto antes de adicionar a chave IronBarcode:

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

Substitua todas as quatro linhas por uma única atribuição:

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

Problema 3: Remoção de NotSupportedException de blocos Catch

Problema: Algumas bases de código que usaram o Neodynamic Reader adicionaram blocos catch (NotSupportedException) especificamente para lidar com a falha silenciosa de leituras de código de barras 2D. Esses blocos de captura devem ser removidos juntamente com o código de lançamento; caso contrário, a cláusula catch refere-se a um caminho de código que não pode mais ocorrer.

Solução: Procure por NotSupportedException em arquivos relacionados a código de barras e reveja cada ocorrência. Se a exceção foi lançada em resposta a uma tentativa de leitura de formato 2D, remova tanto o lançamento quanto a captura da exceção:

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

Substitua o corpo do método lançador por BarcodeReader.Read(imagePath) e remova o bloco de captura correspondente de qualquer chamador.

Lista de verificação para migração de código de barras neodinâmico

Pré-migração

  • Procure por todas as referências de pacote Neodynamic: grep -r "Neodynamic.SDK" --include="*.csproj" .
  • Procure por todas as diretivas de uso de Neodynamic: grep -r "using Neodynamic" --include="*.cs" .
  • Pesquise os locais de configuração da licença: grep -r &quot;LicenseOwner\|LicenseKey&quot; --include=&quot;*.cs&quot; .
  • Procure por todos os locais de instância BarcodeInfo: grep -r "new BarcodeInfo\(\)" --include="*.cs" .
  • Procure por todas as chamadas de leitura Neodynamic: grep -r "BarcodeReader.Read" --include="*.cs" .
  • Procure por todos os usos de NotSupportedException em caminhos de código de barras: grep -r "NotSupportedException" --include="*.cs" .
  • Identifique qualquer biblioteca de terceiros (ZXing .NET ou similar) que tenha sido adicionada especificamente para suprir a lacuna de leitura 2D — ela pode ser removida após a migração.
  • Registre todas as chaves de licença da Neodynamic para que possam ser desativadas dos repositórios de segredos após a verificação.

Tarefas de atualização de código

  1. Execute dotnet remove package Neodynamic.SDK.Barcode
  2. Execute dotnet remove package Neodynamic.SDK.BarcodeReader
  3. Execute dotnet add package IronBarcode
  4. Remova todas as diretivas using Neodynamic.SDK.Barcode e using Neodynamic.SDK.BarcodeReader
  5. Adicione using IronBarCode em todos os arquivos que realizam operações de código de barras
  6. Remova ambos os blocos de configuração de licença Neodynamic.
  7. Adicione IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" uma vez na inicialização do aplicativo
  8. Substitua new BarcodeInfo() + atribuições de propriedades + barcode.GetImage().Save(...) por BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path)
  9. Substitua padrões QRCodeWriter adequadamente usando QRCodeWriter.CreateQrCode()
  10. Substitua chamadas BarcodeReader.Read(bitmap) removendo a construção new Bitmap(imagePath) e passando o caminho do arquivo diretamente para BarcodeReader.Read(imagePath)
  11. Remova todos os espaços reservados throw new NotSupportedException(...) para leitura 2D e substitua por BarcodeReader.Read(imagePath)
  12. Remova os blocos correspondentes catch (NotSupportedException) dos chamadores
  13. Remova qualquer biblioteca de terceiros que tenha sido adicionada exclusivamente para suprir a lacuna de leitura 2D da Neodynamic.

Testes pós-migração

  • Verificar se a geração do código de barras Code 128 produz resultados com dimensões e configurações de DPI correspondentes às configurações anteriores.
  • Verificar se a geração do código QR produz resultados legíveis por scanner.
  • Verificar se a leitura do código de barras 1D retorna os mesmos valores que a implementação anterior do Neodynamic Reader.
  • Verifique se a leitura de QR Code tem sucesso em imagens que anteriormente lançaram NotSupportedException
  • Verifique se a leitura de DataMatrix e PDF417 é bem-sucedida caso esses formatos apareçam na entrada do aplicativo.
  • Teste a leitura de código de barras em PDF se o aplicativo processar documentos PDF.
  • Confirme se todas as referências à chave de licença do Neodynamic foram removidas dos arquivos de configuração e variáveis ​​de ambiente.
  • Confirme se a biblioteca 2D de terceiros (caso exista) foi completamente removida e se nenhuma importação restante a referencia.

Principais benefícios da migração para o IronBarcode

Capacidade unificada de leitura e gravação: após a migração, toda simbologia que o IronBarcode pode gerar também pode ser lida de volta através da mesma biblioteca. A assimetria entre o gerador e o leitor do Neodynamic — onde códigos QR, DataMatrix, PDF417 e Aztec podiam ser produzidos, mas não consumidos — é eliminada. Aplicações que anteriormente exigiam uma solução alternativa ou uma biblioteca de terceiros para leitura 2D agora obtêm essa capacidade sem qualquer trabalho adicional de integração.

Administração de Licença Única: Um pacote NuGet , uma chave de licença e um bloco de configuração substituem duas assinaturas de produto separadas. A renovação, a rotação de chaves e o gerenciamento de variáveis ​​de ambiente tornam-se metade da complexidade. A redução dos custos administrativos é contínua, e não um ganho pontual.

Leitura nativa de códigos de barras em PDF: o IronBarcode lê códigos de barras diretamente de documentos PDF, retornando metadados de número de página juntamente com os valores dos códigos de barras. Aplicações que processam manifestos de envio, documentos de faturas ou registros médicos contendo códigos de barras incorporados não exigem mais uma etapa intermediária de extração de imagem ou uma biblioteca PDF adicional para suportar a leitura de códigos de barras. Consulte a lista completa de formatos de código de barras suportados para obter o conjunto completo de simbologias e tipos de entrada abrangidos.

Eliminação da Dependência do System.Drawing: Os SDKs da Neodynamic dependem de System.Drawing, o que exige configuração adicional de biblioteca nativa no Linux e em contêineres Docker.IronBarcode não possui dependência System.Drawing, o que significa que o mesmo código base roda no Windows, Linux e em ambientes de nuvem conteinerizados sem alterações específicas de plataforma.

Custo de licenciamento simplificado para funcionalidade completa: Um projeto que precisava dos SDKs da Neodynamic e de uma terceira biblioteca para leitura 2D estava pagando por três dependências para obter o que a IronBarcode oferece com uma única licença. Para projetos que exigem geração e leitura 2D, a migração consolida tanto a infraestrutura técnica quanto o custo de licenciamento em um único produto comercial. As informações atuais sobre preços estão disponíveis na página de licenciamento do IronBarcode .

Observe: Neodynamic e ZXing.NET são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por Neodynamic ou ZXing.NET. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.
Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.