Altbilgi içeriğine atla
VIDEOLAR

IronBarcode ile C#'ta Hayat Verme ve Barkodları Stilize Etme

OnBarcode'dan IronBarcode'a Geçiş

Bu kılavuz, OnBarcode'dan IronBarcode'a geçiş yolunu tamamen kapsar. Üç adımlı kurulum değişikliğini ele alır, her yaygın desen için önceki ve sonraki kod örnekleri sağlar,OnBarcodeAPI'sini IronBarcode eşdeğerlerine eşler, geçiş sırasında ortaya çıkan sorunları belgeler ve geçişi tamamladığınızı düşündüğünüzde kod tabanınızı denetlemek için arama terimleri listesi sunar.

Neden OnBarcode'dan Geçiş Yapmalısınız?

İki SKU Satın Alma Aşırı Yükü: OnBarcode, Generator SDK (Sadece Doğrusal ve Doğrusal + 2D kademeleri) için sürekli fiyatlandırma yayınlar ve Reader SDK'yı ayrı fiyatlandırılmış bir ürün olarak listeler. Her iki yeteneğe sahip olması gereken bir organizasyon, iki SKU'ya karşı iki satın alma işlemi tamamlamalıdır — kullanılan semboloji için doğru Generator kademesini seçmek, sonra Okuyucuyu ayrı olarak satın almak — toplam maliyet belirlenmeden önce. Sürtüşme, tek bir kalemlik satın alma yerine iki ayrı satın alma durumunda tekrar eder.

Bölünmüş Ürün Yükü: Üretim ve okuma ayrı ürünlerdir ve ayrı NuGet paketleri, ayrı lisans isim alanları, ayrı lisans anahtarları ve ayrı sürüm programları vardır. Her iki ürünü kullanan bir proje, başlangıçta iki lisans anahtarı yapılandırmalı, yükseltmeler boyunca iki paket sürümünü izlemeli ve iki bağımsız sürüm döngüsünün farkında olmalıdır. Oku talebi başlangıçta yalnızca üretim olan bir projeye eklendiğinde, ikinci ürün için tüm tedarik ve entegrasyon süreci yeniden yapılmalıdır.

PDF İş Akışı Boşlukları: OnBarcode, PDF belgelerinden barkod okumak için yerel desteğe sahip değil. Faturalar, nakliye manifestleri, satın alma emirleri veya arşiv taramaları içine gömülü barkodları işleyen projeler, ayrı bir PDF-görüntü işleme kütüphanesi edinmeli, boru hattına entegre etmeli, lisansını ayrı olarak yönetmeli ve her birini birer birerOnBarcodeReader SDK'sına iletmelidir. Bu, tek bir bağımlılık çözümünün yeterli olamayacağı iki-bağımlılık çözümüne yol açar.

API Belirginliği:OnBarcodejeneratörü, bir Barcode nesnesini başlatmayı, Resolution, BarWidth ve BarHeight gibi mantıklı varsayılanlar içeren özelliklerin atanmasını ve ardından bir üretim yönteminin çağrılmasını gerektirir. Aynı çıktı, statik fabrika API'si kullanılarak önemli ölçüde daha az kodla üretilebilir. Toplu üretim üzerinde arttıkça, özellik atama deseni büyük miktarda tekrarlayan kod üretir, bu da gözden geçirilmesi ve bakımı yapılması gereken büyük miktardadır.

Temel Sorun

Çift-lisans yapılandırması, hem üretim hem de okuma gereksinimi duyan herhangi bir proje için en acil sürtünme noktasıdır. OnBarcode, başlangıçta iki ayrı lisans isim alanına iki ayrı çağrı gerektirir:

// OnBarcode: two products, two DLL references, no runtime key
//OnBarcodeuses pre-licensed DLLs — the purchased DLL is already activated.
// There is no runtime SetLicense() call; the license is baked into the downloaded assembly.
using OnBarcode.Barcode;
using OnBarcode.Barcode;
// OnBarcode: two products, two DLL references, no runtime key
//OnBarcodeuses pre-licensed DLLs — the purchased DLL is already activated.
// There is no runtime SetLicense() call; the license is baked into the downloaded assembly.
using OnBarcode.Barcode;
using OnBarcode.Barcode;
Imports OnBarcode.Barcode
Imports OnBarcode.Barcode
$vbLabelText   $csharpLabel

IronBarcode, tüm yetenekleri — üretim, okuma, PDF desteği ve toplu işlemler — kapsayan tek bir özelliği atamayla ve tek bir anahtar altında azaltır.

// IronBarcode: one package, one key, one line
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// IronBarcode: one package, one key, one line
using IronBarCode;

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

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

Uygulamadaki her barkod işlemi — ister üretim yapıyor, ister okuyucu, ister PDF işliyor olsun — bu tek konfigürasyon altında çalışır.

IronBarcode vs OnBarcode: Özellik Karşılaştırması

Özellik OnBarcode IronBarcode
Barkod oluşturma Evet Evet
Barkod okuma Ayrı ürün, ayrı satınalma Dahil
PDF barkod okuma Yerel olarak desteklenmez Yerel — dış kütüphane gerekli değil
Okuma üzerinde format otomatik algılama Hayır — açık BarcodeType[] gereklidir Evet
Sonuç metaverisi (format, pozisyon, sayfa) Mevcut değil — yalnızca ham string[] Evet — tam meta verilerle BarcodeResults
Logo üzerine yerleştirilmiş QR Kod Manuel GDI+ kodu gerekli Yerleşik
Yayınlanmış fiyatlandırma Evet — ürün başına sayfalar (Jenerator kademeleri + ayrı Okuyucu) Evet — tek bir sayfa tüm yetenekleri kapsar
Tüm özellikler için tek lisans anahtarı Hayır — ürüne göre ayrı anahtarlar Evet
NuGet dağıtımı Mevcut, eski DLL indirmelerinin yanında Başlangıçtan beri mevcut
Kaynak kod erişimi Sınırsız katman sadece Mevcut değil
.NET 8 / 9 desteği Evet Evet
Docker / bulut lisans yapılandırması Yönerge Ortam değişkeni desteği

Hızlı Başlangıç: OnBarcode'dan IronBarcode'a Geçiş

Adım 1:OnBarcodePaket Referanslarını Kaldırın

Projeniz NuGet paketlerini kullanıyorsa, her ikisini de kaldırın:

dotnet remove package OnBarcode.Barcode.Generator
dotnet remove package OnBarcode.Barcode.Reader
dotnet remove package OnBarcode.Barcode.Generator
dotnet remove package OnBarcode.Barcode.Reader
SHELL

Projeniz eski DLL tabanlı dağıtımı kullanıyorsa, ayrıca manuel referans bloğunu .csproj'dan kaldırın:


<ItemGroup>
  <Reference Include="OnBarcode.Barcode">
    <HintPath>lib\OnBarcode.Barcode.dll</HintPath>
    <Private>true</Private>
  </Reference>
</ItemGroup>

<ItemGroup>
  <Reference Include="OnBarcode.Barcode">
    <HintPath>lib\OnBarcode.Barcode.dll</HintPath>
    <Private>true</Private>
  </Reference>
</ItemGroup>
XML

DLL dosyalarını lib/ dizininden veya depolandıkları yerden silin. Eski montajların, yeni NuGet paketiyle birlikte bırakılması derleme zamanında isim alanı çatışmalarına yol açar.

Adım 2:IronBarcode Ekle

Bir paket, üretim, okuma ve PDF desteğini kapsar:

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

Okuma için ikinci bir paket gerekli değil. PDF desteği için ikinci bir paket gerekli değil.

Adım 3: İsim Alanlarını Güncelleyin ve İkili Lisans Yapılandırmasını Değiştirin

Her ikiOnBarcodeusing direktifini tek bir IronBarcode ithalatı ile değiştirin:

// Remove
using OnBarcode.Barcode;
using OnBarcode.Barcode;

// Add
using IronBarCode;
// Remove
using OnBarcode.Barcode;
using OnBarcode.Barcode;

// Add
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

Çift DLL referanslarını tek bir anahtar ataması ile değiştirin. Bu işlemi uygulamanın başlangıcında bir kez, herhangi bir barkod işlemi çalışmadan önce yerleştirin:

// Remove theOnBarcodeDLL references and using directives
// Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove theOnBarcodeDLL references and using directives
// Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove the OnBarcodeDLL references and Imports statements
' Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Kod Göç Örnekleri

Code 128 Barkod Oluşturma

Temel Code 128 durumu, özellik-atama deseni ile statik fabrika desenini karşılaştırarak gösterir.

OnBarcode Yaklaşımı:

using OnBarcode.Barcode;

Linear barcode = new Linear();
barcode.Type = BarcodeType.CODE128;
barcode.Data = "SHIP-2024-001";
barcode.Resolution = 96;
barcode.X = 1;
barcode.BarcodeHeight = 80;
barcode.ShowText = true;
barcode.drawBarcode("shipping-label.png");
using OnBarcode.Barcode;

Linear barcode = new Linear();
barcode.Type = BarcodeType.CODE128;
barcode.Data = "SHIP-2024-001";
barcode.Resolution = 96;
barcode.X = 1;
barcode.BarcodeHeight = 80;
barcode.ShowText = true;
barcode.drawBarcode("shipping-label.png");
Imports OnBarcode.Barcode

Dim barcode As New Linear()
barcode.Type = BarcodeType.CODE128
barcode.Data = "SHIP-2024-001"
barcode.Resolution = 96
barcode.X = 1
barcode.BarcodeHeight = 80
barcode.ShowText = True
barcode.drawBarcode("shipping-label.png")
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");
using IronBarCode;

BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");
Imports IronBarCode

BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128) _
    .SaveAsPng("shipping-label.png")
$vbLabelText   $csharpLabel

Veri ve kodlama türü, CreateBarcode için argüman olarak geçirilir. Çözünürlük ve çubuk yüksekliği gibi özellikler, taranabilir bir çıktı üretmek için gerekli değildir; varsayılanlar çoğu uygulama için uygundur. Özel boyutlar gerektiğinde, bunlar, CreateBarcode ile SaveAsPng arasında zincirli çağrılar olarak eklenebilir, değiştirilebilir nesne durumu oluşturmadan.

Logo ile QR Kod Oluşturma

Logo markalı QR kodları, görüntü kaplama adımında OnBarcode'un System.Drawing adımına dönmesini gerektirir.IronBarcode bunu yerleşik bir işlem olarak sunar.

OnBarcode Yaklaşımı:

using OnBarcode.Barcode;
using System.Drawing;

QRCode qr = new QRCode();
qr.Data = "https://example.com/product/4891";
qr.QRCodeDataMode = QRCodeDataMode.Auto;
qr.QRCodeECL = QRCodeECL.H; // H-level error correction required for logo overlay

Image qrImage = qr.drawBarcode();

using (Graphics g = Graphics.FromImage(qrImage))
{
    Image logo = Image.FromFile("brand-logo.png");
    int logoSize = qrImage.Width / 5;
    int x = (qrImage.Width - logoSize) / 2;
    int y = (qrImage.Height - logoSize) / 2;
    g.DrawImage(logo, x, y, logoSize, logoSize);
}

qrImage.Save("product-qr.png");
using OnBarcode.Barcode;
using System.Drawing;

QRCode qr = new QRCode();
qr.Data = "https://example.com/product/4891";
qr.QRCodeDataMode = QRCodeDataMode.Auto;
qr.QRCodeECL = QRCodeECL.H; // H-level error correction required for logo overlay

Image qrImage = qr.drawBarcode();

using (Graphics g = Graphics.FromImage(qrImage))
{
    Image logo = Image.FromFile("brand-logo.png");
    int logoSize = qrImage.Width / 5;
    int x = (qrImage.Width - logoSize) / 2;
    int y = (qrImage.Height - logoSize) / 2;
    g.DrawImage(logo, x, y, logoSize, logoSize);
}

qrImage.Save("product-qr.png");
Imports OnBarcode.Barcode
Imports System.Drawing

Dim qr As New QRCode()
qr.Data = "https://example.com/product/4891"
qr.QRCodeDataMode = QRCodeDataMode.Auto
qr.QRCodeECL = QRCodeECL.H ' H-level error correction required for logo overlay

Dim qrImage As Image = qr.drawBarcode()

Using g As Graphics = Graphics.FromImage(qrImage)
    Dim logo As Image = Image.FromFile("brand-logo.png")
    Dim logoSize As Integer = qrImage.Width \ 5
    Dim x As Integer = (qrImage.Width - logoSize) \ 2
    Dim y As Integer = (qrImage.Height - logoSize) \ 2
    g.DrawImage(logo, x, y, logoSize, logoSize)
End Using

qrImage.Save("product-qr.png")
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

var qr = QRCodeWriter.CreateQrCodeWithLogo("https://example.com/product/4891", "brand-logo.png", 500);
qr.SaveAsPng("product-qr.png");
using IronBarCode;

var qr = QRCodeWriter.CreateQrCodeWithLogo("https://example.com/product/4891", "brand-logo.png", 500);
qr.SaveAsPng("product-qr.png");
Imports IronBarCode

Dim qr = QRCodeWriter.CreateQrCodeWithLogo("https://example.com/product/4891", "brand-logo.png", 500)
qr.SaveAsPng("product-qr.png")
$vbLabelText   $csharpLabel

Hata düzeltme seviyesi, logo boyutlandırma hesaplaması ve görüntü bileşimi dahili olarak ele alınır. Hiçbir System.Drawing bağımlılığı gerekli değildir.

Görüntüden Barkod Okuma

Bir görüntü dosyasından okuma, ürün birleşimini en net şekilde gösterir.OnBarcodeile birlikte, okuma, ayrı bir Reader SDK, ayrı bir lisans çağrısı ve açık format belirtimi gerektirir.IronBarcode ile aynı paket ve anahtarla yerine geçen tek bir statik çağrıdır.

OnBarcode Yaklaşımı:

using OnBarcode.Barcode;

//OnBarcodereader is distributed as a pre-licensed DLL — no runtime SetLicense() call.
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };
string[] results = scanner.Scan("received-label.png");

foreach (string value in results)
    Console.WriteLine(value);
using OnBarcode.Barcode;

//OnBarcodereader is distributed as a pre-licensed DLL — no runtime SetLicense() call.
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };
string[] results = scanner.Scan("received-label.png");

foreach (string value in results)
    Console.WriteLine(value);
Imports OnBarcode.Barcode

' OnBarcodereader is distributed as a pre-licensed DLL — no runtime SetLicense() call.
Dim scanner As New BarcodeScanner()
scanner.BarcodeTypes = New BarcodeType() {BarcodeType.Code128, BarcodeType.QRCode}
Dim results As String() = scanner.Scan("received-label.png")

For Each value As String In results
    Console.WriteLine(value)
Next
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

var results = BarcodeReader.Read("received-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");
using IronBarCode;

var results = BarcodeReader.Read("received-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");
Imports IronBarCode

Dim results = BarcodeReader.Read("received-label.png")
For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Nesne oluşturma yok, format dizisi yok, ayrı lisans yapılandırması yok. Format otomatik olarak algılanır. Her sonuç, çözülen değeri ve algılanan formatı taşır. Okuma seçenekleri ve desteklenen görüntü türleri hakkında daha fazla bilgi için görüntülerden barkod okuma kılavuzuna bakın.

PDF'den Barkod Okuma

Bu geçiş örneği, PDF sayfalarını bir üçüncü taraf kütüphane kullanarak görüntülere dönüştürüp bu görüntüleriOnBarcodeReader SDK'sına ileten takımlar için geçerlidir.

OnBarcode Yaklaşımı:

//OnBarcodehas no native PDF support.
// A separate PDF rendering library was required — for example PdfiumViewer or Aspose.PDF.
var pageImages = RenderPdfPagesToImages("invoices.pdf"); // external library call

using OnBarcode.Barcode;
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };

foreach (var pageImage in pageImages)
{
    string[] results = scanner.Scan(pageImage);
    foreach (string value in results)
        Console.WriteLine(value);
}
//OnBarcodehas no native PDF support.
// A separate PDF rendering library was required — for example PdfiumViewer or Aspose.PDF.
var pageImages = RenderPdfPagesToImages("invoices.pdf"); // external library call

using OnBarcode.Barcode;
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };

foreach (var pageImage in pageImages)
{
    string[] results = scanner.Scan(pageImage);
    foreach (string value in results)
        Console.WriteLine(value);
}
Imports OnBarcode.Barcode

' OnBarcode has no native PDF support.
' A separate PDF rendering library was required — for example PdfiumViewer or Aspose.PDF.
Dim pageImages = RenderPdfPagesToImages("invoices.pdf") ' external library call

Dim scanner As New BarcodeScanner()
scanner.BarcodeTypes = New BarcodeType() {BarcodeType.Code128, BarcodeType.QRCode}

For Each pageImage In pageImages
    Dim results As String() = scanner.Scan(pageImage)
    For Each value As String In results
        Console.WriteLine(value)
    Next
Next
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

var results = BarcodeReader.Read("invoices.pdf");
foreach (var result in results)
    Console.WriteLine($"Page {result.PageNumber}: {result.Format} — {result.Value}");
using IronBarCode;

var results = BarcodeReader.Read("invoices.pdf");
foreach (var result in results)
    Console.WriteLine($"Page {result.PageNumber}: {result.Format} — {result.Value}");
Imports IronBarCode

Dim results = BarcodeReader.Read("invoices.pdf")
For Each result In results
    Console.WriteLine($"Page {result.PageNumber}: {result.Format} — {result.Value}")
Next
$vbLabelText   $csharpLabel

Rendelenme adımı yok, harici PDF kütüphanesi yok, format dizisi yok. PDF barkod okuma yeteneği, tüm sayfaları otomatik olarak işler ve her sonuca sayfa numarasını ekler.

Toplu Üretim

Öğeler koleksiyonu için barkod üretimi, tekli üretim ile aynı desen farkını takip eder.

OnBarcode Yaklaşımı:

using OnBarcode.Barcode;

foreach (var item in inventoryItems)
{
    Linear barcode = new Linear();
    barcode.Type = BarcodeType.CODE128;
    barcode.Data = item.Sku;
    barcode.Resolution = 96;
    barcode.BarWidth = 1;
    barcode.BarHeight = 80;
    barcode.ShowText = true;
    barcode.drawBarcode($"labels/{item.Id}.png");
}
using OnBarcode.Barcode;

foreach (var item in inventoryItems)
{
    Linear barcode = new Linear();
    barcode.Type = BarcodeType.CODE128;
    barcode.Data = item.Sku;
    barcode.Resolution = 96;
    barcode.BarWidth = 1;
    barcode.BarHeight = 80;
    barcode.ShowText = true;
    barcode.drawBarcode($"labels/{item.Id}.png");
}
Imports OnBarcode.Barcode

For Each item In inventoryItems
    Dim barcode As New Linear()
    barcode.Type = BarcodeType.CODE128
    barcode.Data = item.Sku
    barcode.Resolution = 96
    barcode.BarWidth = 1
    barcode.BarHeight = 80
    barcode.ShowText = True
    barcode.drawBarcode($"labels/{item.Id}.png")
Next
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

foreach (var item in inventoryItems)
{
    BarcodeWriter.CreateBarcode(item.Sku, BarcodeEncoding.Code128)
        .SaveAsPng($"labels/{item.Id}.png");
}
using IronBarCode;

foreach (var item in inventoryItems)
{
    BarcodeWriter.CreateBarcode(item.Sku, BarcodeEncoding.Code128)
        .SaveAsPng($"labels/{item.Id}.png");
}
Imports IronBarCode

For Each item In inventoryItems
    BarcodeWriter.CreateBarcode(item.Sku, BarcodeEncoding.Code128) _
        .SaveAsPng($"labels/{item.Id}.png")
Next
$vbLabelText   $csharpLabel

OnBarcode API'den IronBarcode Eşleme Başvuru

OnBarcode IronBarcode Notlar
Lisanslanmış DLL (çalışma zamanı anahtar çağrısı yok) IronBarCode.License.LicenseKey = "key" Özellik ataması; başlangıçta bir kez çağrılır
İki DLL referansı (jeneratör + okuyucu) Tek bir NuGet paketi Tüm yetenekleri kapsayan tek bir paket
new Linear() BarcodeWriter.CreateBarcode(data, encoding) Statik fabrika; nesne örneği yok
barcode.BarcodeType = BarcodeType.CODE128 BarcodeEncoding.Code128 parametre olarak İkinci argüman olarak CreateBarcode'ye geçirildi
barcode.Data = "..." CreateBarcode'nin ilk parametresi Veri, ilk argüman
barcode.drawBarcode("file.png") .SaveAsPng("file.png") Format-adlı metod
barcode.drawBarcode("file.jpg") .SaveAsJpeg("file.jpg") Format-adlı metod
barcode.drawBarcode("file.pdf") .SaveAsPdf("file.pdf") Yerel PDF çıktısı
BarcodeType.CODE128 BarcodeEncoding.Code128 Sabit adı değiştirildi
BarcodeType.QRCode BarcodeEncoding.QRCode Doğrudan eşleme
BarcodeType.EAN13 BarcodeEncoding.EAN13 Doğrudan eşleme
BarcodeType.DataMatrix BarcodeEncoding.DataMatrix Doğrudan eşleme
BarcodeType.PDF417 BarcodeEncoding.PDF417 Doğrudan eşleme
new BarcodeScanner() { BarcodeTypes = [...] } BarcodeReader.Read(path) — statik Nesne yok, format belirtimi yok
scanner.Scan("file.png")string[] BarcodeReader.Read("file.png")BarcodeResults Daha zengin dönen tür
results[0] (ham dize) result.Value Çözümlenmiş dize değeri
Yok result.Format Algılanan format — OnBarcode'ta mevcut değil
Yok result.PageNumber PDF okumaları için sayfa kaynağı
Yok BarcodeReader.Read("document.pdf") Yerel PDF okuma;OnBarcodeeşdeğeri yok
QR logosu için manuel GDI+ yerleşim QRCodeWriter.CreateQrCodeWithLogo() Yerleşik logo desteği
BarcodeType[] yapılandırması Gerekli değil Otomatik tespit varsayılandır

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

Sorun 1: DLL Referans Çatışmaları

OnBarcode: Eski DLL dağıtımındaki projeler .csproj içinde lib\OnBarcode.Barcode.dll veya benzer yolları işaret eden <Reference> öğeleri içerir.IronBarcode eklendiğinde eski DLL disk üzerinde kalırsa, derleyici aynı ad alanı öneklerini sağlayan iki derleme görecek ve belirsiz referans hataları üretecektir.

Çözüm: dotnet add package IronBarcode çalıştırmadan önce .csproj'den <ItemGroup> referans bloğunu kaldırın. DLL dosyalarını diskten silin. Temiz bir derleme ile, eskimiş derleme referanslarının kalmadığını doğrulayın.

# Search for lingeringOnBarcodeDLL references in project files
grep -r "OnBarcode" --include="*.csproj" .
grep -r "OnBarcode" --include="*.props" .
# Search for lingeringOnBarcodeDLL references in project files
grep -r "OnBarcode" --include="*.csproj" .
grep -r "OnBarcode" --include="*.props" .
SHELL

Konu 2: Aşamalı Göç Sırasında Tür Adı Çakışmaları

OnBarcode: Okuyucu ad alanı, BarcodeScanner adlı bir sınıf ihraç eder. IronBarcode, BarcodeReader adlı bir statik sınıfa sahiptir. Bu isimler doğrudan çatışmaz, ancak hem OnBarcode.Barcode.Reader hem de IronBarCode'yi aynı anda içe aktaran herhangi bir dosya BarcodeType enum belirsizliği görebilir —OnBarcodeformat seçimi için BarcodeType tanımlar ve IronBarcodeBarcodeEncoding kullanır. Geçiş sırasında her iki ad alanını aktif tutmak, herhangi bir BarcodeType referansında derleme hatalarına neden olacaktır.

Çözüm: Her dosyanın geçişini atomik olarak tamamlayın — aynı düzenlemede using OnBarcode.Barcode.Reader yönergesini kaldırın ve using IronBarCode ekleyin. Hiçbir dosyada her iki 'using' direktifini bırakmayın. Aşamalı bir yaklaşım gerekliyse, geçici olarak tam nitelikli adlar kullanın:

// Temporary disambiguation during phased migration
var results = IronBarCode.BarcodeReader.Read("file.png");
// Temporary disambiguation during phased migration
var results = IronBarCode.BarcodeReader.Read("file.png");
' Temporary disambiguation during phased migration
Dim results = IronBarCode.BarcodeReader.Read("file.png")
$vbLabelText   $csharpLabel

Sorun 3: BarcodeType Dizisi Kaldırma

OnBarcode: Okuyucu 'reader.BarcodeTypes = new BarcodeType[] { ... }' işlevi görmesi için gereklidir. Okuyucu kodunu taşıyan geliştiriciler, formatları açıkça belirtme alışkanlığını taşıyabilir ve IronBarcode içinde bir eşdeğer yapılandırma arayabilir.

Çözüm: Format belirtimini tamamen kaldırın. BarcodeReader.Read desteklenen tüm formatlar arasında otomatik algılama gerçekleştirir. Herhangi bir yapılandırma gerekmez ve IronBarcode içinde BarcodeType[] eşdeğeri mevcut değildir çünkü gerekli değildir.

// No format configuration required
var results = BarcodeReader.Read("label.png");
// No format configuration required
var results = BarcodeReader.Read("label.png");
Dim results = BarcodeReader.Read("label.png")
$vbLabelText   $csharpLabel

OnBarcode Göç Kontrol Listesi

Geçiş Öncesi Görevler

OnBarcode kullanımlarını tespit etmek için kod tabanını inceleyin ve değişiklik yapmadan önce:

# Find allOnBarcodenamespace imports
grep -rn "using OnBarcode" --include="*.cs" .

# Find all license configuration calls
grep -rn "SetLicense" --include="*.cs" .

# Find all generator usage
grep -rn "new Linear\|new QRCode\|drawBarcode\|BarcodeType\." --include="*.cs" .

# Find all reader usage
grep -rn "BarcodeScanner\|\.Scan(\|BarcodeType\[\]" --include="*.cs" .

# Find DLL references in project files
grep -rn "OnBarcode" --include="*.csproj" .
grep -rn "OnBarcode" --include="*.sln" .
# Find allOnBarcodenamespace imports
grep -rn "using OnBarcode" --include="*.cs" .

# Find all license configuration calls
grep -rn "SetLicense" --include="*.cs" .

# Find all generator usage
grep -rn "new Linear\|new QRCode\|drawBarcode\|BarcodeType\." --include="*.cs" .

# Find all reader usage
grep -rn "BarcodeScanner\|\.Scan(\|BarcodeType\[\]" --include="*.cs" .

# Find DLL references in project files
grep -rn "OnBarcode" --include="*.csproj" .
grep -rn "OnBarcode" --include="*.sln" .
SHELL

Hangi dosyaların sadece üretim, hangilerinin okuma kullandığını ve hangilerinin her ikisini kullandığını belgeleyin. NuGet paket referansı yerine manuel <Reference> DLL bloğu içeren dosyaları not edin.

Kod Güncelleme Görevleri

  1. OnBarcode.Barcode.Generator NuGet paketini kaldırın
  2. OnBarcode.Barcode.Reader NuGet paketini kaldırın
  3. Herhangi bir manuel <Reference> DLL girdilerini .csproj dosyalarından kaldırın 4.OnBarcodeDLL dosyalarını depodan silin
  4. dotnet add package IronBarcode çalıştırın
  5. Her dosyada using OnBarcode.Barcode yerine using IronBarCode koyun
  6. Her dosyada using OnBarcode.Barcode.Reader yerine using IronBarCode koyun
  7. Her ikiOnBarcodeDLL <Reference> girdilerini kaldırın (üretici ve okuyucu) — değiştirilecek herhangi bir çalışma zamanı lisans araması yok
  8. Uygulama başlatıldığında bir kere IronBarCode.License.LicenseKey = "YOUR-KEY" ekleyin
  9. Her new Linear() veya new QRCode() + özellik atama bloğunu BarcodeWriter.CreateBarcode(data, encoding)'e dönüştürün
  10. Her dosyada barcode.drawBarcode("file.png")'i .SaveAsPng("file.png") ile değiştirin (veya uygun format yöntemi)
  11. Her dosyada new BarcodeScanner() { BarcodeTypes = [...] } + .Scan(path) yerine BarcodeReader.Read(path) ile değiştirin
  12. Sonuç işleme yöntemlerini string[] indekslemeden result.Value ve result.Format'ye BarcodeResults üzerinde güncelleyin
  13. Herhangi birOnBarcodePDF kısıtlaması çalışmasını çözmek için kullanılan PDF'den resim oluşturma kodunu kaldırın
  14. Çok aşamalı PDF işleme + tarama döngülerini tek bir BarcodeReader.Read("file.pdf") çağrısıyla değiştirin

Geçiş Sonrası Testler

  • Projede kullanılan tüm barkod türlerini (Kod 128, QR, EAN, Data Matrix, PDF417) doğrulayın ve taranabilir bir çıktı almasını sağlayın
  • Oluşturulan barkodları fiziksel bir tarayıcı veya mobil cihazla tarayarak okunabilirliğini onaylayın
  • Bilinen test resimleri için barkod okumanın doğru değerleri döndürdüğünü doğrulayın
  • Çok sayfalı test belgeleri için PDF okumanın doğru değerleri ve doğru sayfa numaralarını döndürdüğünü doğrulayın
  • Uygulamayı herhangi bir CI ortamında çalıştırarak lisans anahtar yapılandırmasının boru hattında doğru çalıştığını doğrulayın
  • Geçiş tamamlandıktan sonra .cs, .csproj veya yapılandırma dosyalarında OnBarcode dizesinin kalmadığını kontrol edin

IronBarcode'a Geçmenin Temel Faydaları

Konsolide Paket ve Lisans: Göçten sonra, bir NuGet paketi ve bir lisans anahtarı tüm barkod işlemlerini kapsar. Satın alınacak ayrı ürünler yoktur, izlenecek bağımsız sürüm programları veya başlangıçta sürdürülecek çift lisans yapısı yoktur. İki ürünlü düzenlemenin karmaşıklığı, tek bir bağımlılıkla değiştirilmiştir.

Şeffaf Satın Alma: IronBarcode, ürün web sitesinde fiyatlarla yayımlanmış süresiz lisans seviyeleri sunar. Bir organizasyon, toplam maliyeti belirleyebilir, bir satın alma siparişi verebilir ve bir satış görüşmesi yapmadan satın alma işlemini tamamlayabilir. IronBarcode lisanslama sayfası tüm seviyeler için fiyatlandırma ve Docker ve bulut ortamları için anahtar yapılandırma detaylarını içerir.

Yerel PDF Desteği: Barkod gömülü PDF'leri işlemek için ayrı bir PDF oluşturma kütüphanesi gerektiren projeler, bu bağımlılığı tamamen ortadan kaldırabilir. Tek bir BarcodeReader.Read çağrısı, bir PDF belgesinin tüm sayfalarını herhangi bir işleme adımı olmadan işler ve her sonuç, çekildiği sayfa numarasını içerir.

Daha Zengin Okuma Sonuçları: BarcodeResults dönüş türü, kod çözülmüş değeri, algılanan barkod formatını, kaynak görüntü içindeki sınırlama kutusu koordinatlarını ve PDF okumaları için sayfa numarasını sağlar. Daha önce düz bir string[] ile çalışan uygulamalar, artık format bilgisini yüzeye çıkarabilir, açıklama iş akışlarını destekleyebilir veya ek işlem olmadan güven temelli filtreleme uygulayabilir.

Azaltılmış API Yüzeyi: Statik fabrika modeli, özellik-atama modelinin yerini alır. Ortak üretim işlemleri daha az kod satırı gerektirir ve okuma işlemleri, örnek oluşturma veya format ön yapılandırması gerektirmez. Toplu işlemler, incelemesi ve zaman içinde sürdürülmesi daha kolay olan, öğe başına daha küçük bir kod harcaması ile fayda sağlar.

Lütfen dikkate alınAspose,OnBarcodeve PDFium ilgili sahiplerinin tescilli markalarıdır. Bu site Aspose Pty Ltd, Chromium Project, Google veyaOnBarcodeile ilişkili değildir, onaylanmamış veya sponsorluğunda 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 OnBarcode'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.

OnBarcode 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.

OnBarcode'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 OnBarcode 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ı OnBarcode'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, OnBarcode'tan 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.

OnBarcode'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