Altbilgi içeriğine atla
VIDEOLAR

C#'ta Barkod Veri Formatlarını Nasıl Çıktı Edersiniz | IronBarcode

Neodynamic Barcode'dan IronBarcode'a Geçiş

Bu rehber, Neodynamic.SDK.Barcode ve Neodynamic.SDK.BarcodeReader'den IronBarcode'a tam bir geçiş yolu sağlar. Her iki Neodynamic paketinin kaldırılmasını, çift lisans yapılandırmasının tek bir anahtar ile değiştirilmesini, oluşturma ve okuma API çağrılarının çevrilmesini ve Neodynamic ürün seti ile mümkün olmayan 2D barkod okuma yeteneği kazanma sürecini kapsar. Bu kılavuz, mevcut Neodynamic koduna sahip geliştiriciler için yazılmıştır ve geçişi tamamlamak için dosya bazında bir yaklaşım gerektirir.

Neodynamic Barkoddan Neden Geçiş Yapılmalı

2D Okuma Boşluğu: Neodynamic Barcode Professional SDK, QR Kodu, DataMatrix, PDF417 ve Aztec barkodları oluşturur. Bu formatların hiçbiri, eşlik eden Barkod Okuyucu SDK'sı tarafından okunamaz. Ürün etiketleri, nakliye konteynırları veya belge izleme için QR kodları üreten bir proje, aynı kodları okuyucu ile geri okuyamaz.IronBarcode aynı kütüphane ve aynı lisans aracılığıyla QR Kodu, DataMatrix, PDF417, Aztec ve desteklenen diğer tüm 2D formatları okur ve üretir.

Çift Ürün Yükü: Her iki Neodynamic SDK'sını kullanan projeye iki PackageReference girişi, iki using yönergesi, iki lisans bloğu ve iki ayrı güncelleme döngüsü eklenir. Bu yük, her geliştirici makinesinde, her CI hattında ve her üretim ortamında tekrar eder. Ayrı bakım gereksinimlerine sahip iki paketi, tek bir bağımlılık ve tek bir lisans ile birleştirmek, bu geçişin mekanik sonucudur.

Üçüncü Kitaplık Sorunu: 2D okuma boşluğuyla karşılaşan ve geçmek yerine etrafından dolaşmayı seçen ekipler, genellikle QR kodu okuma için özellikle ZXing.Net olan üçüncü bir kitaplık eklediler. Bu karar, bir sınırlamayı farklı bir karmaşaya takas eder: .NET çalışma zamanı veya bağlı çerçeve güncellendiğinde her biri kendi sürüm kısıtlamaları, kendi sürüm notları ve kendi potansiyel çatışmaları olan üç barkod ilişkili bağımlılık.IronBarcode hepsini değiştirir.

Fiyatlandırma Karmaşıklığı: Neodynamic Barcode Professional SDK geliştirici başına fiyatlandırılır (Basic yaklaşık $352, Ultimate yaklaşık $705'tir ComponentSource aracılığıyla). Barcode Reader SDK ayrıca ayrı bir ücrete tabidir. 1D okuma ve oluşturma ihtiyacında olan bir proje her ikisini de satın almak zorundadır ve birleşik maliyet ekip büyüklüğüne göre Okuyucu ücretinin üzerine çıkmaktadır. 2D okuma ihtiyacı olan bir proje yine de Neodynamic ürün ailesi içinde hiçbir fiyatla bu gereksinimi karşılayamaz.IronBarcode Lite, tek bir lisans altında oluşturma ve okuma — 1D ve 2D —'yi kapsar. Güncel fiyatlandırma IronBarcode lisanslama sayfasında bulunabilir.

Temel Sorun

Her iki Neodynamic SDK'sını tam bir barkod iş akışı için kullanan herhangi bir kod tabanında temel sorun, QR kodu okumanın hiçbir zaman mümkün olmamasıydı:

// Before:Neodynamic Barkod Okuyucu 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;
}
// Before:Neodynamic Barkod Okuyucu 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;
}
Imports Neodynamic.SDK.BarcodeReader
Imports System.Drawing

Public Function ReadQrCode(imagePath As String) As String
    Using bitmap As New Bitmap(imagePath)
        Dim reader As New BarcodeReader()
        Dim results = reader.Read(bitmap)

        ' Results are always null or empty for 2D barcodes
        If results Is Nothing OrElse Not results.Any() Then
            Throw New NotSupportedException("Neodynamic Barcode Reader does not support QR codes")
        End If

        Return results.First().Value
    End Using
End Function
$vbLabelText   $csharpLabel

IronBarcode'a geçiş yaptıktan sonra, aynı işlem, format özelleştirmeye gerek olmadan standart bir okuma çağrısı haline gelir:

// 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;
}
// 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;
}
Imports IronBarCode

Public Function ReadQrCode(imagePath As String) As String
    Dim result = BarcodeReader.Read(imagePath).FirstOrDefault()
    Return If(result?.Value, Nothing)
End Function
$vbLabelText   $csharpLabel

2D barkod okuma başvurusunda bulunan her throw new NotSupportedException(...) yer tutucu, bu geçiş sırasında kaldırılır ve çalışır bir okuma çağrısı ile değiştirilir.

IronBarcode vs Neodynamic Barcode: Özellik Karşılaştırması

Özellik Neodynamic Barcode Professional Neodynamic Barkod Okuyucu IronBarcode
Code 128, EAN-13, UPC-A üretimi Evet Yok Evet
QR Kodu, DataMatrix, PDF417 nesil Evet Yok Evet
1D barkod okuma Yok Evet Evet
QR Kodu okuma Yok Hayır Evet
DataMatrix okuma Yok Hayır Evet
PDF417 okuma Yok Hayır Evet
Yerel PDF barkod okuma Hayır Hayır Evet
Otomatik format algılama Yok Hayır Evet
NuGet paketleri gerekli 1 1 1 (her ikisini kapsar)
Lisans anahtarları gerekli 1 1 (ayrı) 1 (hepsini kapsar)
System.Drawing bağımlılığı Evet Evet Hayır
Linux / Docker desteği Sınırlı Sınırlı Evet
.NET 8 / .NET 9 desteği Evet Sınırlı Evet
Async yığın okuma Hayır Hayır Evet

Hızlı Başlangıç: Neodynamic Barkoddan IronBarcode'a Geçiş

Adım 1: Her İki Neodynamic Paketini Kaldırın

Her iki paket de kaldırılmalıdır. Kaldırma sırasını etkileyen paylaşılan bağımlılıkları yoktur:

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

Devam etmeden önce, her iki girişin de .csproj dosyasından silindiğini kontrol edin.

Adım 2:IronBarcode Ekle

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

Adım 3: Çift Lisans Yapılandırmasını Değiştirin

Her iki Neodynamic lisans bloğunu kaldırın ve bunları tek bir IronBarcode anahtar ataması ile değiştirin. Bu atama, uygulama başlatılırken bir kez yapılır — Program.cs, Startup.cs veya uygulamanın bileşim kökünde:

// 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";
// 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";
Imports Neodynamic.SDK.Barcode
Imports 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"
$vbLabelText   $csharpLabel
// After: one key covers generation and reading across all formats
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// After: one key covers generation and reading across all formats
using IronBarCode;

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

' After: one key covers generation and reading across all formats
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Neodynamic lisans anahtarlarını tutan herhangi bir yapılandırma dosyası, ortam değişkeni veya sırrı taşıyan yer deposu, geçiş doğrulandıktan sonra devre dışı bırakılabilir.

Kod Göç Örnekleri

Bir Code 128 Barkodu Oluşturma

Neodynamic Yaklaşımı:

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);
}
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);
}
Imports Neodynamic.SDK.Barcode
Imports System.Drawing.Imaging

Public Sub GenerateCode128(data As String, outputPath As String)
    Dim barcode As New BarcodeProfessional()
    barcode.Code = data
    barcode.Symbology = Symbology.Code128
    barcode.BarcodeUnit = BarcodeUnit.Pixel

    Dim image As System.Drawing.Image = barcode.GetBarcodeImage()
    image.Save(outputPath, ImageFormat.Png)
End Sub
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

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

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

Public Sub GenerateCode128(data As String, outputPath As String)
    BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
        .SaveAsPng(outputPath)
End Sub
$vbLabelText   $csharpLabel

System.Drawing.Imaging ithalatı artık gerekli değil. BarcodeInfo örneği ve onun özellik atamaları tek bir yöntem çağrısına indirgeniyor. Boyutlandırma, açıklama ve çıkış formatı seçenekleri için, 1D barkodlar oluşturma kılavuzuna bakın.

Bir QR Kodu Oluşturma

Neodynamic Yaklaşımı:

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);
}
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);
}
Imports Neodynamic.SDK.Barcode
Imports System.Drawing.Imaging

Public Sub GenerateQrCode(data As String, outputPath As String)
    Dim barcode As New BarcodeProfessional()
    barcode.Code = data
    barcode.Symbology = Symbology.QRCode
    barcode.QRCodeECL = QRCodeErrorCorrectionLevel.H

    barcode.GetBarcodeImage().Save(outputPath, ImageFormat.Png)
End Sub
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

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

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

Public Sub GenerateQrCode(data As String, outputPath As String)
    QRCodeWriter.CreateQrCode(data, 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
        .SaveAsPng(outputPath)
End Sub
$vbLabelText   $csharpLabel

Üretilen kod çevirisi sadece API yüzeyini değiştirir. Bu geçişin getirdiği kritik fark, aynı uygulamanın artık ürettiği QR kodlarını aynıIronBarcode kütüphanesi ve aynı lisans aracılığıyla okuyabilmesidir. 2D barkod oluşturmanın tam işlenmesi için, 2D barkodlar oluşturma kılavuzuna bakın.

1D Barkodları Okuma

Neodynamic Yaklaşımı:

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>();
}
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>();
}
Imports Neodynamic.SDK.BarcodeReader
Imports System.Drawing

Public Function Read1DBarcodes(imagePath As String) As String()
    Using bitmap As New Bitmap(imagePath)
        Dim reader As New BarcodeReader()
        Dim results = reader.Read(bitmap)
        Return If(results?.Select(Function(r) r.Value).ToArray(), Array.Empty(Of String)())
    End Using
End Function
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

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

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

Public Function Read1DBarcodes(imagePath As String) As String()
    Dim results = BarcodeReader.Read(imagePath)
    Return results.Select(Function(r) r.Value).ToArray()
End Function
$vbLabelText   $csharpLabel

Bitmap yapımı ve System.Drawing ithalatı kaldırılıyor. IronBarcode, dosya yolunu doğrudan kabul eder. result.Value özelliği ismi her iki API'de de aynı, bu nedenle döndürülen değerleri işleyen aşağı akış kodu değişmiyor. Çoklu barkod görüntü okuma ve ön işleme seçenekleri için, görüntülerden barkod okuma kılavuzuna bakın.

QR Kodları Okuma (Daha Önce İmkansızdı)

Neodynamic Yaklaşımı:

// 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");
}
// 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");
}
' This method could not be implemented with Neodynamic Barcode Reader
Public Function ReadQrCode(imagePath As String) As String
    Throw New NotSupportedException("Neodynamic Barcode Reader does not support QR codes")
End Function
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

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

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

Public Function ReadQrCode(imagePath As String) As String
    Dim result = BarcodeReader.Read(imagePath).FirstOrDefault()
    Return If(result?.Value, Nothing)
End Function
$vbLabelText   $csharpLabel

2D barkod okuma başvurusu yapan her throw new NotSupportedException(...) yer tutucu standart bir okuma çağrısı haline gelir. Yöntem gövdesi, bir hata fırlatmaktan çalışan bir uygulamaya dönüşüyor. QR kodları için özel bir işleme gerek yok;IronBarcode formatı otomatik olarak tanır.

PDF Belgelerden Barkod Okuma (Yeni Yetkinlik)

Neodynamic Yaklaşımı:

// Neodynamic Reader cannot read barcodes from PDF files directly
// An image extraction step using a separate library was required before reading
//Hayırdirect equivalent exists
// Neodynamic Reader cannot read barcodes from PDF files directly
// An image extraction step using a separate library was required before reading
//Hayırdirect equivalent exists
' Neodynamic Reader cannot read barcodes from PDF files directly
' An image extraction step using a separate library was required before reading
'Hayırdirect equivalent exists
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

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

Public Sub ReadBarcodesFromPdf(pdfPath As String)
    Dim results = BarcodeReader.Read(pdfPath)

    For Each result In results
        Console.WriteLine($"Value: {result.Value} | Format: {result.Format} | Page: {result.PageNumber}")
    Next
End Sub
$vbLabelText   $csharpLabel

IronBarcode, PDF belgelerden tüm sayfalarda doğrudan barkod okur. Her barkodun bulunduğu sayfa numarası sonuçta döndürülür. Bu yetkinlik, ek bir kitaplık ve arada bir görüntü çıkarma adımı gerektirmez.

Neodynamic Barkod API'den IronBarcode Haritalama Referansı

Neodynamic API IronBarcode Eşdeğeri Notlar
BarcodeInfo.LicenseOwner = "..." IronBarCode.License.LicenseKey = "key" Tek anahtarda birleştirildi
BarcodeInfo.LicenseKey = "..." (part of single key above) Ayrı bir sahip alanı yoktur
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner (removed) Gerekli değil
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey (removed) Gerekli değil
new BarcodeInfo() BarcodeWriter.CreateBarcode(data, encoding) Statik, hiçbir örnek yok
barcode.Value = data CreateBarcode'un ilk parametresi Yaratılışta geçirilir
barcode.Symbology = Symbology.Code128 BarcodeEncoding.Code128 İkinci parametre
barcode.Symbology = Symbology.QRCode BarcodeEncoding.QRCode Tam yolculuk artık destekleniyor
barcode.QRCodeECL = QRCodeErrorCorrectionLevel.H QRCodeWriter.QrErrorCorrectionLevel.Highest Farklı sınıf giriş noktası
barcode.GetImage().Save(path, ImageFormat.Png) .SaveAsPng(path) Akıcı, ImageFormat enum yok
BarcodeReader.Read(bitmap) BarcodeReader.Read(imagePath) Dosya yolu, Bitmap'in yerini alıyor
result.Value result.Value Aynı özellik adı
Symbology.DataMatrix BarcodeEncoding.DataMatrix Sadece üretim → üretim ve okuma
2D okuma için throw new NotSupportedException(...) BarcodeReader.Read(imagePath) Çalışan bir uygulama ile değiştirin

Yaygın Göç Sorunları ve Çözümleri

Problem 1: İki Paket Kaldırma Sırası

Problem: Sadece bir Neodynamic paketini kaldıran ve diğerini bırakan geliştiriciler, iki SDK'nın hiçbir tür paylaşmaması ancak bazı kaynak dosyaların aynı dosyada her iki tanım alanını da ithal etmesi nedeniyle derleme hatalarına neden olur.

Çözüm: Kaynakta herhangi bir değişiklik yapmadan önce her iki paketi de kaldırın. Her ikisi de kaldırıldıktan sonra, tüm using Neodynamic.SDK.Barcode ve using Neodynamic.SDK.BarcodeReader yönergelerini arayın ve birlikte kaldırın:

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

Sonra denetlemeyi yapınız:

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

Problem 2: Çift Lisans Yapılandırması Temizliği

Problem: İki Neodynamic lisans bloğu genellikle farklı konumlarda ortaya çıkar - biri uygulama başlatma sınıfında ve biri bir servis başlatıcısında. Eğer sadece bir blok kaldırılırsa, kalan kod artık var olmayan bir tanım alanına referans verir ve derleyemez.

Çözüm:IronBarcode anahtarı eklenmeden önce tüm dört Neodynamic lisans özelliği atamalarını arayın ve birlikte kaldırın:

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

Dört satırın tümünü tek bir atama ile değiştirin:

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

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Problem 3: Catch Bloklarından NotSupportedException'ın Kaldırılması

Problem: Neodynamic Reader kullanan bazı kod tabanları, 2D barkod okumalarının sessiz başarısızlığını özellikle ele almak için catch (NotSupportedException) bloklarını eklemiştir. Bu catch blokları, fırlatma koduyla birlikte kaldırılmalıdır; aksi takdirde, catch bölümü artık gerçekleşemeyecek bir kod yolunu referans alır.

Çözüm: Barcode ile ilgili dosyalardaki NotSupportedException'yi arayın ve her bir karşılaşmayı gözden geçirin. Eğer istisna bir 2D format okuma girişimine yanıt olarak yükseltiliyorsa, hem fırlatma hem de catch kaldırın:

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

Atan yanıt gövdesini BarcodeReader.Read(imagePath) ile değiştirin ve herhangi bir çağırıcıdan ilgili catch ifadesini kaldırın.

Neodynamic Barkod Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Tüm Neodynamic paket referanslarını arayın: grep -r "Neodynamic.SDK" --include="*.csproj" .
  • Tüm Neodynamic using yönergelerini arayın: grep -r "using Neodynamic" --include="*.cs" . Lisans yapılandırma yerlerini arayın: grep -r "LicenseOwner|LicenseKey" --include="*.cs" .
  • Tüm BarcodeInfo örnekleme yerlerini arayın: grep -r "new BarcodeInfo\(\)" --include="*.cs" .
  • Tüm Neodynamic okuma çağrılarını arayın: grep -r "BarcodeReader.Read" --include="*.cs" .
  • Barkod yollarındaki tüm NotSupportedException kullanımlarını arayın: grep -r "NotSupportedException" --include="*.cs" . Özellikle 2D okuma boşluğunu kapatmak için eklenen üçüncü taraf kitaplığı (ZXing.Net veya benzeri) belirleyin — geçişten sonra kaldırılabilir Tüm Neodynamic lisans anahtarlarını kaydedin, böylece doğrulandıktan sonra sır mağazalarından devre dışı bırakılabilirler

Kod Güncelleme Görevleri

  1. dotnet remove package Neodynamic.SDK.Barcode çalıştır
  2. dotnet remove package Neodynamic.SDK.BarcodeReader çalıştır
  3. dotnet add package IronBarcode çalıştır
  4. Tüm using Neodynamic.SDK.Barcode ve using Neodynamic.SDK.BarcodeReader yönergelerini kaldırın
  5. Barkod operasyonları gerçekleştiren tüm dosyalara using IronBarCode ekleyin
  6. Her iki Neodynamic lisans yapılandırma bloğunu kaldırın
  7. Uygulama başlatıldığında bir kez IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" ekleyin
  8. new BarcodeInfo() + özellik atamaları + barcode.GetImage().Save(...), BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path) ile değiştirin
  9. QRCodeWriter kalıplarını uygun şekilde QRCodeWriter.CreateQrCode() kullanarak değiştirin
  10. BarcodeReader.Read(bitmap) çağrılarını new Bitmap(imagePath) yapımını kaldırarak ve dosya yolunu doğrudan BarcodeReader.Read(imagePath)'ya ileterek değiştirin
  11. 2D okuma için tüm throw new NotSupportedException(...) yer tutucuları kaldırın ve BarcodeReader.Read(imagePath) ile değiştirin
  12. Çağırıcılardan ilgili catch (NotSupportedException) bloklarını kaldırın
  13. Neodynamic 2D okuma boşluğunu kapatmak için özel olarak eklenmiş üçüncü taraf kitaplığını kaldırın

Geçiş Sonrası Testler

Code 128 barkod üretiminin önceki boyutlara ve DPI ayarlarına uygun çıktı ürettiğini doğrulayın QR Kod üretiminin taranabilir çıktı ürettiğini doğrulayın 1D barkod okumanın önceki Neodynamic Okuyucu uygulaması ile aynı değerleri döndürdüğünü doğrulayın

  • Daha önce NotSupportedException atan resimlerdeki QR Kod okumanın başarılı olduğundan emin olun Uygulamanın girdisinde görünüyorsa, DataMatrix ve PDF417 okumanın başarılı olduğunu doğrulayın Uygulama PDF belgeleri işliyorsa, PDF barkod okumayı test edin Tüm Neodynamic lisans anahtar referanslarının yapılandırma dosyalarından ve ortam değişkenlerinden kaldırıldığını doğrulayın Farklı bir kitaptık (mevcutsa) tam olarak kaldırıldığını ve kalan ithalatların onu referans almadığını doğrulayın

IronBarcode'a Geçmenin Temel Faydaları

Birleşik Okuma-Yazma Yetkinliği: Geçiş sonrası, IronBarcode'un üretebileceği her semboloji, aynı kütüphane aracılığıyla geri okunabilir. Neodynamic'in üreteci ve okuyucusu arasındaki asimetri — QR kodları, DataMatrix, PDF417 ve Aztec üretilebilir ama tüketilemez — kaldırıldı. Önceden, 2D okuma için çözüm veya üçüncü bir kitaplık gerektiren uygulamalar, ek bir entegrasyon çalışması olmadan o yeteneği kazanır.

Tek Lisans Yönetimi: Bir NuGet paketi, bir lisans anahtarı ve bir yapılandırma bloğu ile iki ayrı ürün aboneliğinin yerini alır. Yenileme, anahtar rotasyonu ve ortam değişkeni yönetimi, yarı yarıya daha az karmaşık hale gelir. İdari yükteki azalma, tek seferlik bir kazanç değil, devam eden bir avantajdır.

Doğal PDF Barkod Okuma: IronBarcode, PDF belgelerden doğrudan barkod okur, barkod değerleriyle birlikte sayfa numarası meta verilerini döndürür. Gömülü barkod içeren sevkiyat manifestoları, fatura belgeleri veya tıbbi kayıtları işleyen uygulamalar, barkod okuma desteği için ara bir görüntü çıkarma adımı veya ek bir PDF kütüphanesi gerektirmez. Kapsanan tüm sembolojiler ve giriş tiplerinin tam kümesi için desteklenen barkod formatlarının tam listesine bakın.

System.Drawing Bağımlılığının Ortadan Kaldırılması: Neodynamic SDK'ları System.Drawing'e bağlıdır ve bu durum, Linux ve Docker konteynerlerinde ek yerel kütüphane yapılandırması gerektirir. IronBarcode, hiç bir System.Drawing bağımlılığı taşımaz, bu nedenle aynı kod temeli Windows, Linux ve konteynerize edilmiş bulut ortamlarında platforma özgü yapılandırma değişiklikleri yapılmadan çalışır.

Tam Yetenek İçin Basitleştirilmiş Lisanslama Maliyeti: Her iki Neodynamic SDK'sına ek olarak 2D okuma için üçüncü bir kitaplığı da gerekli duyan bir proje, IronBarcode'un tek bir lisans altında sağladığı her şeyi gerçekleştirmek için üç bağımlılık için ödeme yapıyordu. Hem üretim hem de 2D okuma gerektiren projeler için, geçiş hem teknik ayak izini hem de lisanslama maliyetini tek bir ticari ürüne yoğunlaştırmakta. Geçerli fiyat bilgisi, IronBarcode lisanslama sayfasında mevcuttur.

Lütfen dikkate alınNeodynamic ve ZXing.NET ilgili sahiplerinin tescilli markalarıdır. Bu site, Neodynamic veya ZXing.NET ile ilişkili, desteklenen veya tarafından finanse edilen değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Sıkça Sorulan Sorular

Neden Neodynamic Barcode Professional'dan IronBarcode'a geçiş yapmalıyım?

Yaygın nedenler arasında lisanslamanın basitleştirilmesi (SDK + runtime anahtar karmaşıklığının kaldırılması), veri geçiş limitlerinin ortadan kaldırılması, yerel PDF desteği kazanılması, Docker/CI/CD dağıtımının iyileştirilmesi ve üretim kodunda API tekrarlama azalması yer alır.

Neodynamic API çağrılarını IronBarcode ile nasıl değiştiririm?

Örnek oluşturma ve lisanslama tekrarlamalarını IronBarCode.License.LicenseKey = "anahtar" ile değiştirin. Okuyucu çağrılarını BarcodeReader.Read(yol) ile ve yazıcı çağrılarını BarcodeWriter.CreateBarcode(veri, kodlama) ile değiştirin. Statik yöntemler örnek yönetimi gerektirmez.

Neodynamic Barcode Professional'dan IronBarcode'a geçiş sırasında ne kadar kod değişiyor?

Çoğu geçiş daha az kod satırıyla sonuçlanır. Lisanslama tekrarlamaları, örnek oluşturucular ve açık format yapılandırması kaldırılır. Temel okuma/yazma işlemleri, daha temiz sonuç nesneleriyle daha kısa IronBarcode eşdeğerlerine dönüştürülür.

Geçiş sırasında hem Neodynamic Barcode Professional hem de IronBarcode'un yüklü kalması gerekiyor mu?

Hayır. Çoğu geçiş doğrudan değişim yapılır, paralel bir işletim yerine geçer. Bir hizmet sınıfını bir seferde geçirin, NuGet referansını değiştirin ve sonraki sınıfa geçmeden önce başlatma ve API çağrı desenlerini güncelleyin.

IronBarcode için NuGet paketi adı nedir?

Paket 'IronBarCode' (büyük B ve C harfleriyle). 'Install-Package IronBarCode' veya 'dotnet add package IronBarCode' ile kurun. Kodda kullanılan yönerge 'using IronBarCode;' şeklindedir.

IronBarcode, Docker dağıtımını Neodynamic Barcode Professional'a kıyasla nasıl kolaylaştırır?

IronBarcode, harici SDK dosyaları veya montajlı lisans yapılandırması olmayan bir NuGet paketidir. Docker'da, IRONBARCODE_LICENSE_KEY ortam değişkenini ayarlayın ve paket lisans doğrulamasını başlangıçta kendi kendine yapar.

IronBarcode, Neodynamic'ten göç ettikten sonra tüm barkod formatlarını otomatik olarak algılıyor mu?

Evet. IronBarcode, desteklenen tüm formatlardaki sembolojiyi otomatik olarak algılar. Açık BarcodeTypes sayımı gerekli değildir. Format zaten biliniyorsa ve performans önemliyse, BarcodeReaderOptions arama alanını optimize etmek için sınırlamayı sağlar.

IronBarcode, ayrı bir kütüphane olmadan PDF'lerden barkod okuyabiliyor mu?

Evet. BarcodeReader.Read("document.pdf") PDF dosyalarını yerel olarak işlemler. Sonuçlar her barkod için SayfaNumarası, Format, Değer ve Güven içerir. Harici bir PDF render adımı gerekmez.

IronBarcode, paralel barkod işlemeyi nasıl yönetiyor?

IronBarcode'un statik yöntemleri durumsuz ve thread-safe'dir. Dağıtılmış dosya listeleri üzerinde per-thread örnek yönetimi olmadan doğrudan Parallel.ForEach kullanın. BarcodeReaderOptions.MaxParallelThreads, iç thread bütçesini kontrol eder.

Neodynamic Barcode Professional'dan IronBarcode'a geçiş yaparken hangi sonuç özellikleri değişiyor?

Yaygın yeniden adlandırmalar: BarcodeValue, Value olur; BarcodeType, Format olur. IronBarcode sonuçları ayrıca Güven ve SayfaNumarası ekler. Çözüm çapında arama-değiştirme, mevcut sonuç işleme kodundaki yeniden adlandırmaları ele alır.

Bir CI/CD hattında IronBarcode lisanslamasını nasıl ayarlayabilirim?

IRONBARCODE_LICENSE_KEY'i bir boru hattı sırrı olarak saklayın ve uygulama başlangıç kodunda IronBarCode.License.LicenseKey olarak atayın. Bir sır, geliştirme, test, aşama ve üretim dahil olmak üzere tüm ortamları kapsar.

IronBarcode, özel biçimlendirmeye sahip QR kodu üretimini destekliyor mu?

Evet. QRCodeWriter.CreateQrCode() özelleştirilmiş renkler için ChangeBarCodeColor(), logo yerleştirme için AddBrandLogo(), yapılandırılabilir hata düzeltme seviyeleri ve PNG, JPG, PDF ve akış dahil birden çok çıktı formatını destekler.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara