IRONSOFTWAREHOME
VIDEOLAR

BarcodeLib'ten IronBarcode'a Geçiş

Curtis Chau
Curtis Chau
Updated: 8 Haziran 2026

Bu kılavuz, .NET geliştiricileri için BarcodeLib'den IronBarcode'a tam göç yolunu sunar. Takımların bu geçişi yapmasının nedenlerini, adım adım paket değişimini, her yaygınBarcodeLibdeseni için kod göçü örneklerini, tam API eşleme referansını ve bir kod tabanında göçü yönetmek için yapılandırılmış bir kontrol listesini kapsar.

BarcodeLib'den Neden Geçiş Yapılmalı

BarcodeLib'den IronBarcode'a geçen ekipler bu tetikleyicileri rapor eder:

Okuma API'si Yok: BarcodeLib, hiçbir zaman bir okuma veya kod çözme yeteneği içermemiştir. Barkod görüntüleri üreten bir projeye, yüklenen görüntülerden, depo tarayıcılarından veya tedarikçi belgelerinden barkod tarama gereksinimi geldiğinde,BarcodeLibbunu karşılayamaz. Tek seçenek,BarcodeLibile birlikte bakımını yapacak bir ikinci bağımlılık grafiği ve ikinci bir API yüzeyi tanıtan ZXing.Net gibi bir ikinci kütüphane eklemektir.

**SkiaSharp Sürüm Çatışması:**BarcodeLib3.x, System.Drawing.Common'yi değiştirmek için grafik arka ucu olarak SkiaSharp'ı tanıttı. Kütüphane, belirli bir SkiaSharp sürüm aralığına sabitlenmiş durumda. MAUI projelerinde, Blazor projelerinde ve başka bir bağımlılığın da SkiaSharp çektiği herhangi bir projede, çözülen versiyon genellikle BarcodeLib'in beklediği aralığın dışında olur. Bu, geri yükleme sırasında NU1608 uyarıları üretir ve en kötü durumlarda, cihazda çalışma zamanı montaj bağlama hatalarına yol açar.

PDF Desteği Yok: İçerisine gömülü barkodlar içeren PDF belgeleri üreten uygulamalar — faturalar, iş emirleri, gönderi listeleri — bazen bu barkodları aşağı akış işlem sırasında geri okumaya ihtiyaç duyar.BarcodeLibbarkod görüntüleri oluşturur ancak her iki taraf için PDF desteği yoktur.BarcodeLibile bir PDF'den barkod çıkarmak, PDF sayfalarını ayrı bir PDF kütüphanesi ile görüntülere dönüştürmeyi ve ardından bu görüntüleri ayrı bir okuma kütüphanesine iletmeyi gerektirir.

**Bayt Dizisi Çıkışı için Akış Kodlama Adımı:**BarcodeLib3.x, HTTP yanıtları, veritabanı BLOB sütunları ve en çok sonrası tüketicilerin aslında ihtiyaç duyduğu byte[] çıkışı üretmek için SkiaSharp ile MemoryStream'ye kodlama adımı gerektiren SKImage döndürür. IronBarcode, oluşturma zincirinde doğrudan .ToPngBinaryData() sağlar.

Temel Sorun

BarcodeLib'in sadece üretim mimarisi, herhangi bir tarama yeteneği eklemenin yığınına ikinci bir kütüphane eklemesini gerektirir:

// BarcodeLib: generation only — reading requires a completely separate library
using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();
SKImage img = b.Encode(Type.Code128, "PRODUCT-12345", 300, 100);
using var stream = File.OpenWrite("barcode.png");
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);

// To read it back, a separate scanning library such as ZXing.Net is required —
// separate API, separate dependency graph to maintain alongside BarcodeLib.

IronBarcode her iki işlemi de aynı pakette aynı using ifadesiyle çalıştırır:

// IronBarcode: generation and reading — no second library needed
using IronBarCode;

// Generate
BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .SaveAsPng("barcode.png");

// Read back — same package, same namespace
var result = BarcodeReader.Read("barcode.png").First().Value;
Console.WriteLine(result);  // "PRODUCT-12345"

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

ÖzellikBarcodeLibIronBarcode
Barkod oluşturmaEvetEvet
Barkod okumak / taramakHayırEvet (BarcodeReader.Read())
QR kod üretimiHayır (yalnızca 1D)Evet (gelişmiş, logo yerleştirme ile)
PDF barkod okumaHayırEvet (yerel, ek kütüphane yok)
PDF barkod üretim çıktısıHayırEvet
SkiaSharp bağımlılığıEvet (sürüm çatışması riski)Hayır
MAUI proje uyumluluğuÇakışma riski (NU1608)Çakışma yok
Akışkan zincirlenebilir APIHayırEvet
byte[] doğrudan çıkışManuel (MemoryStream ile).ToPngBinaryData()
Çoklu barkod algılamaHayırEvet (ExpectMultipleBarcodes)
Okuma hızı ayarlamasıYokEvet (ReadingSpeed enum)
Linux / macOS desteğiKısmi (SkiaSharp bağımlı)Tam
Docker / konteyner desteğiYapılandırma gerekliEvet
Aktif bakımEvet (topluluk)Evet (ticari)
Ticari destek / SLAHayırEvet
LisansApache 2.0 (ücretsiz)$999–$4,799 süresiz

Hızlı Başlangıç: BarcodeLib'den IronBarcode'a Geçiş

Geçiş bu öncü adımlarla hemen başlayabilir.

Adım 1: NuGet Paketini Değiştirin

BarcodeLib paketini önce kaldırın:

dotnet remove package BarcodeLib
SHELL

Nasıl referans verildiğinden emin değilseniz, .csproj dosyasını kontrol edin:

grep -n "BarcodeLib" YourProject.csproj
SHELL

TümBarcodeLibile ilgili <PackageReference> girişlerini kaldırın. BarcodeLib'den gelen NU1608 uyarılarını aşmak için açık <PackageReference Include="SkiaSharp"> varsa, bunları da kaldırın — IronBarcode'u yükledikten sonra, SkiaSharp'ın başka sebeplerle gerekip gerekmediğini değerlendirin. Daha sonra IronBarcode'u yükleyin:

dotnet add package IronBarcode
SHELL

Adım 2: Ad Alanlarını Güncelleyin

Her dosyada referans verilenBarcodeLibusing yönergelerini değiştirin:

// Before
using BarcodeStandard;
using SkiaSharp;

// After
using IronBarCode;

Adım 3: Lisansa İzin Verin

Uygulama başlangıcında lisans başlatmayı ekleyin:

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

ASP.NET Core uygulamaları için, bunu Program.cs içine builder.Build()'den önce yerleştirin. Konsol uygulamaları için, Main()'nin en üstüne yerleştirin. Diğer uygulamalardan çağrılan sınıf kütüphaneleri için, sunucu uygulaması nerede başlatılırsa orada başlatın.

Kod Göç Örnekleri

Temel Code128 Üretimi

En yaygınBarcodeLibdeseni: bir örnek oluşturun, özellikleri ayarlayın, Encode() çağırın.

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;

public void GenerateShippingLabel(string trackingNumber, string outputPath)
{
    var b = new Barcode();
    b.IncludeLabel = true;
    SKImage img = b.Encode(Type.Code128, trackingNumber, 400, 120);
    using var stream = File.OpenWrite(outputPath);
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
}

IronBarcode Yaklaşımı:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public void GenerateShippingLabel(string trackingNumber, string outputPath)
{
    BarcodeWriter.CreateBarcode(trackingNumber, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .AddAnnotationTextBelowBarcode(trackingNumber)
        .SaveAsPng(outputPath);
}

Özellik-ayarlayıcı bloğu, akıcı bir zincire çöker. .AddAnnotationTextBelowBarcode(), b.IncludeLabel = true'yi değiştirir — çubukların altında hangi metnin görüneceğini kontrol etmeniz için etiket dizesini açıkça kabul eder. .ResizeTo() genişlik/yükseklik argümanlarını değiştirir. Gelişmiş üretim seçenekleri için, IronBarcode barkod üretim dokümantasyonu bölümüne bakın.

byte[] Döndürme — yaygın Web API Deseni

BarcodeLib 3.x, bir SKImage döndürür. Bundan bayt almak için SkiaSharp aracılığıyla bir MemoryStream içine kodlanması gerekir. IronBarcode, doğrudan .ToPngBinaryData() sağlar.

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;
using System.IO;

public byte[] GetBarcodeBytes(string data)
{
    var b = new Barcode();
    SKImage img = b.Encode(Type.Code128, data, 300, 100);

    using var ms = new MemoryStream();
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
    return ms.ToArray();
}

IronBarcode Yaklaşımı:

using IronBarCode;

public byte[] GetBarcodeBytes(string data)
{
    return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(300, 100)
        .ToPngBinaryData();
}

MemoryStream ara adımı yok edildi. .ToPngBinaryData(), HTTP yanıt gövdelerinin, veritabanı BLOB sütunlarının ve dosya yazarlarının aslında istediği byte[]'yi doğrudan döndürür.

Web API Denetleyici Eylemi

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;
using Microsoft.AspNetCore.Mvc;
using System.IO;

[ApiController]
[Route("api/labels")]
public class LabelsController : ControllerBase
{
    [HttpGet("{sku}")]
    public IActionResult GetLabel(string sku)
    {
        var b = new Barcode();
        SKImage img = b.Encode(Type.Code128, sku, 400, 120);

        using var ms = new MemoryStream();
        img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
        return File(ms.ToArray(), "image/png");
    }
}

IronBarcode Yaklaşımı:

using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/labels")]
public class LabelsController : ControllerBase
{
    [HttpGet("{sku}")]
    public IActionResult GetLabel(string sku)
    {
        byte[] pngBytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
            .ResizeTo(400, 120)
            .ToPngBinaryData();

        return File(pngBytes, "image/png");
    }
}

Denetleyici eylemi, MemoryStream bloğunu ve SkiaSharp kodlama adımını kaldırarak küçülür. Bayt dizisi, .ToPngBinaryData()'dan doğrudan File()'e akar.

QR Kod Oluşturma

BarcodeLib 3.x QR kodları oluşturmaz — BarcodeStandard.Type enumu 2D girişler içermez. QR'ninBarcodeLibile birlikte gerektiği projeler genellikle QRCoder gibi ikinci bir kütüphane ekledi. IronBarcode, logo gömme ve stil ayarı için ek seçeneklerle özel bir QRCodeWriter sınıfı kullanır.

BarcodeLib Yaklaşımı:

//BarcodeLibhas no QR Code (or any 2D) support.
// Generating a QR code from aBarcodeLibproject required adding a
// second library such as QRCoder:
//
// using QRCoder;
// var qrGen = new QRCodeGenerator();
// var data = qrGen.CreateQrCode("https://example.com/product/42", QRCodeGenerator.ECCLevel.Q);
// // ... separate API, separate dependency to maintain.
C#

IronBarcode Yaklaşımı:

using IronBarCode;

// Basic QR code
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300)
    .SaveAsPng("qr.png");

// QR code with embedded brand logo (not possible with BarcodeLib)
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");

QRCodeWriter.CreateQrCode() veri dizesini ve piksel boyutunu parametre olarak alır. Logo gömme, renk özelleştirme ve hata düzeltme düzeyi, zincirleme yöntemlerle kullanılabilir. QR kod stil seçenekleri için, IronBarcode QR kod dokümantasyonu bölümüne bakın.

EAN-13 ve UPC-A

Bunlar perakende envanter sistemlerinde yaygındır. Enum isimleri değişir ancak değerler doğrudan eşdeğerdir.

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;

// EAN-13 product barcode
var b = new Barcode();
SKImage ean = b.Encode(Type.Ean13, "5901234123457", 250, 100);
using (var s = File.OpenWrite("product-ean.png"))
    ean.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s);

// UPC-A for US retail
SKImage upc = b.Encode(Type.UpcA, "012345678905", 250, 100);
using (var s = File.OpenWrite("product-upc.png"))
    upc.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s);

IronBarcode Yaklaşımı:

using IronBarCode;

// EAN-13 product barcode
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .ResizeTo(250, 100)
    .SaveAsPng("product-ean.png");

// UPC-A for US retail
BarcodeWriter.CreateBarcode("012345678905", BarcodeEncoding.UPCA)
    .ResizeTo(250, 100)
    .SaveAsPng("product-upc.png");

Barkod Okuma Ekleme (Net-Yeni Kapasitesi)

BarcodeLib'in okuma API'si yoktur. Geçişiniz, yüklenen görüntülerden, depo tarayıcılarından veya taranmış PDF belgelerinden barkod taraması yapmak için yeni bir gereksinimden kaynaklanıyorsa, bunu ikinci bir kütüphane olmadan ekleyin:

BarcodeLib Yaklaşımı:

//BarcodeLib— no reading API exists
// Adding reading requires a separate library such as ZXing.Net:
// dotnet add package ZXing.Net
// using ZXing;
// var reader = new BarcodeReader();
// // ... separate API, separate dependency graph to manage
C#

IronBarcode Yaklaşımı:

using IronBarCode;

// Read a barcode from an image file
var results = BarcodeReader.Read("incoming-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Format: {result.Format}");
}

// Read all barcodes from a multi-page PDF — no PDF library required
var pdfResults = BarcodeReader.Read("supplier-invoice.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

// Configure for high-volume scanning with multiple barcodes per image
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var warehouseResults = BarcodeReader.Read("dock-scan.png", options);

BarcodeReader.Read() görüntü dosyalarını, PDF dosyalarını, akışları ve System.Drawing.Bitmap nesnelerini kabul eder. ReadingSpeed enumu, hacimli taramalarda performans için ayrıntılı taramayı değiştirmenize olanak tanır. Okuma yapılandırma seçenekleri için, IronBarcode okuma dokümantasyonu bölümüne bakın.

SkiaSharp Çatışmasını Çözme

Geçişiniz NU1608 uyarıları tarafından tetiklendiyse, paketleri değiştirirken çatışmanın çözülüp çözülmediğini kontrol edin. dotnet remove package BarcodeLib ve dotnet add package IronBarcode'yi çalıştırdıktan sonra, yeniden oluşturun ve çıktıyı kontrol edin:

dotnet build 2>&1 | grep -i "NU1608|SkiaSharp"
SHELL

Hiçbir çıktı görünmüyorsa, çatışma çözülmüştür. SkiaSharp uyarıları devam ediyorsa, bunlar bağımlılık grafiğinizdeki başka bir paketten geliyor demektir —IronBarcode kaynağı değildir.

BarcodeLib Yaklaşımı:

<!-- Before — explicit overrides needed to pacifyBarcodeLib-->
<ItemGroup>
  <PackageReference Include="BarcodeLib" Version="3.1.5" />
  <!-- Override required because MAUI converges on a newer SkiaSharp -->
  <PackageReference Include="SkiaSharp" Version="3.116.1" />
</ItemGroup>
XML

IronBarcode Yaklaşımı:

<!-- After — clean, no conflict -->
<ItemGroup>
  <PackageReference Include="IronBarcode" Version="*" />
  <!-- SkiaSharp version is now only determined by MAUI's requirements -->
  <PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.116.1" />
</ItemGroup>
XML

BarcodeLib API'den IronBarcode Eşleme Referansı

BarcodeLibIronBarcode
new Barcode()Statik API - örnek gerekmez
b.Encode(Type.Code128, "data", w, h)BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
b.IncludeLabel = true.AddAnnotationTextBelowBarcode("text")
Encode() girilen genişlik/yükseklik.ResizeTo(width, height)
SKImage döndürür.SaveAsPng(path) / .ToPngBinaryData()
Type.Code128BarcodeEncoding.Code128
Type.Code39BarcodeEncoding.Code39
Type.Ean13BarcodeEncoding.EAN13
Type.UpcABarcodeEncoding.UPCA
QR desteği yok (sadece 1D)BarcodeEncoding.QRCode (ayrıca QRCodeWriter)
Type.Itf14BarcodeEncoding.ITF14
Type.CodabarBarcodeEncoding.Codabar
Okuma API'si yokBarcodeReader.Read(path)
MAUI'de SkiaSharp versiyon çatışmasıÇakışan bağımlılıklar yok
img.Encode(...).SaveTo(stream).SaveAsPng(path)
MemoryStream + SkiaSharp kodlama.ToPngBinaryData()

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

Sorun 1: Tür Enum Namespace Değişikliği

BarcodeLib 3.x: BarcodeStandard.Type.Code128 kullanır (PascalCase, BarcodeStandard ad alanında). Eski 2.x kodu BarcodeLib.TYPE.CODE128 kullanabilir (büyük harfle yazılmış sabitler, BarcodeLib ad alanı) — her iki form da kod tabanında gerçek ortamlarda geçişe ortasındayken görülebilir.

Çözüm: BarcodeEncoding.Code128 ile değiştirin. Bir .cs dosyasında grep, tüm tekrarları tespit eder:

grep -rn "Type\.\|TYPE\." --include="*.cs" .
SHELL

Yaygın değişiklikler: Type.Code128 / TYPE.CODE128BarcodeEncoding.Code128, Type.Ean13 / TYPE.EAN13BarcodeEncoding.EAN13, Type.UpcA / TYPE.UPCABarcodeEncoding.UPCA, Type.Itf14 / TYPE.ITF14BarcodeEncoding.ITF14, Type.Codabar / TYPE.CO/DABARBarcodeEncoding.Codabar. BarcodeLib'in QR kaydı yok; Herhangi bir TYPE.QR_Code, 2.x sürümünden veya bir çataldan kalan gereksiz koddur — BarcodeEncoding.QRCode ile değiştirin (veya biçimlendirilmiş çıktı için QRCodeWriter kullanın).

Sorun 2: SKImage / Image Dönüş Türü

BarcodeLib: b.Encode() 3.x'te SKImage ve 2.x'te System.Drawing.Image döndürür. Her iki tür de IronBarcode ile derlenmeyecek.

Çözüm: Ara resim değişkenini kaldırın ve kaydetme mantığını akıcı zincir üzerindeki uygun terminal yöntemi ile değiştirin:

// Before (BarcodeLib 3.x)
SKImage img = b.Encode(Type.Code128, data, 300, 100);
using var ms = new MemoryStream();
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
return ms.ToArray();

// After
return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .ToPngBinaryData();

SKImage img = b.Encode ve Image img = b.Encode desenlerini bulmak için arama yaparak etkilenmiş tüm yerleri bulun.

Sorun 3: Genişlik ve Yükseklik Parametreleri

BarcodeLib: Genişlik ve yükseklik, 3.x'te Encode(Type, string, int, int) üzerinde konumsal argümanlardır ve eski 2.x kodunda ayrı b.Width / b.Height özelliği atamalarıdır. Her iki şeklin de taşınması gerekiyor.

Çözüm: Genişlik/yükseklik, CreateBarcode()'den zincirlenmiş tek bir .ResizeTo(width, height) çağrısı olur. Çağrı yerlerini bulun:

# Find Encode() calls and any Width/Height property assignments
grep -n "\.Encode(\|\.Width = \|\.Height = " --include="*.cs" -r .
SHELL

Ardından boyut argümanlarını veya özellik çiftini tek bir .ResizeTo(width, height) zincir çağrısı ile değiştirin.

Sorun 4: IncludeLabel Boolean Anahtarı

BarcodeLib: b.IncludeLabel = true, verileri çubukların altında görünen metin olarak otomatik olarak kodlayan bir boole türüdür.

Çözüm: Etiket dizesini açıkça alan .AddAnnotationTextBelowBarcode("text") kullanın. Çoğu durumda, barkoda kodlanmış aynı veri dizgisini ilet. Orijinal kod IncludeLabel = true kullanıyorsa ve verileri etiket olarak otomatik olarak işlemek için BarcodeLib'e güveniyorsa, aynı veri dizesini açıkça geçirin:

BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .AddAnnotationTextBelowBarcode(data)  // pass the same string
    .SaveAsPng(outputPath);

Sorun 5:BarcodeLibKaldırıldıktan Sonra Bırakılan SkiaSharp Referansları

BarcodeLib: Projeler, BarcodeLib'in sürüm kısıtlamasını geçersiz kılmak için sıkça açık <PackageReference Include="SkiaSharp"> girdileri biriktirmiştir.BarcodeLibkaldırıldıktan sonra bunlar öksüz kalır.

Çözüm: IronBarcode'a geçtikten sonra, SkiaSharp'in herhangi bir başka paket tarafından hala gerekli olup olmadığını kontrol edin ve özel referansı kaldırmadan önce:

# Check if SkiaSharp is still referenced by anything other than the explicit override
dotnet list package --include-transitive 2>&1 | grep -i skia
SHELL

SkiaSharp yalnızca artık kaldırılan açık <PackageReference> nedeniyle görünüyorsa, bu girişi kaldırın. MAUI veya başka bir bağımlılık tarafından hala çekiliyorsa, bırakın —IronBarcode bununla çakışmaz.

BarcodeLib Geçiş Kontrol Listesi

Geçiş Öncesi Görevler

Başlamadan önce ihtiyaç duyulan değişikliklerin kapsamını anlamak için bu aramaları çalıştırın:

# Find allBarcodeLibusing directives (both 3.x BarcodeStandard and older BarcodeLib)
grep -rn "using BarcodeStandard\|using BarcodeLib" --include="*.cs" .

# Find Barcode object instantiation
grep -rn "new Barcode()" --include="*.cs" .

# Find Encode calls
grep -rn "\.Encode(" --include="*.cs" .

# Find Type enum usage (3.x PascalCase and 2.x uppercase)
grep -rn "Type\.Code128\|Type\.Ean13\|Type\.UpcA\|TYPE\.CODE128\|TYPE\.EAN13\|TYPE\.UPCA" --include="*.cs" .

# Find IncludeLabel usage
grep -rn "IncludeLabel" --include="*.cs" .

# Find the package references in project files
grep -rn "BarcodeLib" --include="*.csproj" .

# Find NU1608 evidence in lock files
grep -rn "NU1608" .
SHELL

Her aramadan etkilenen tüm dosyaları belgeleyin. Hangi projelerin BarcodeLib'i doğrudan referans aldığını ve hangilerinin onu geçişli olarak miras aldığını not edin. YalnızcaBarcodeLibçatışmalarını çözmek için eklenmiş herhangi bir skiaSharp sürüm geçersiz kılmalarını belirleyin.

Kod Güncelleme Görevleri

  1. Her proje için dotnet remove package BarcodeLib çalıştırın
  2. YalnızcaBarcodeLibçatışmalarını düzeltmek için eklenen herhangi bir SkiaSharp sürüm geçersiz kılma referansını kaldır
  3. Her proje için dotnet add package IronBarcode çalıştırın
  4. Her projede uygulama başlangıcına IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; ekleyin
  5. Tüm .cs dosyalarında using BarcodeStandard; (veya eski kodda using BarcodeLib;) ve using SkiaSharp;using IronBarCode; ile değiştirin
  6. 2.x ImageFormat.Png kullanımından kalan using System.Drawing.Imaging; ithalatlarını kaldırın
  7. BarcodeWriter.CreateBarcode() akıcı zincirleri kullanarak new Barcode() + Encode() çağrılarını değiştirin
  8. Type.Code128 / TYPE.CODE128BarcodeEncoding.Code128 ve diğer tüm enum değerlerini değiştirin
  9. Genişlik/yükseklik argümanlarını değiştirin (veya 2.x b.Width = N; b.Height = M;) with .ResizeTo(N, M) zincir çağrıları
  10. b.IncludeLabel = true;.AddAnnotationTextBelowBarcode(data) ile değiştirin
  11. img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(...)'i .SaveAsPng(path) veya .ToPngBinaryData() ile değiştirin
  12. .ToPngBinaryData() onları değiştiriyorsa, ara SKImage / Image değişkenlerini ve MemoryStream bloklarını kaldırın
  13. Gerekli yerlerde barkod okuma kodu ekleyin (BarcodeReader.Read())

Geçiş Sonrası Testler

  • Projeyi derle ve restore çıktısında sıfır NU1608 uyarısı kaldığını onayla
  • dotnet build 2>&1 çalıştır| grep -i "NU1608|SkiaSharp" SkiaSharp çatışmasının tamamen çözüldüğünü doğrulamak için
  • Üretilen barkodların görsel çıktısını, BarcodeLib'den bilinen iyi örneklerle karşılaştır
  • Bir mobil tarayıcı veya BarcodeReader.Read() yöntemi kullanarak QR kodlarının doğru bir şekilde çözüldüğünden emin olun
  • EAN-13 ve UPC-A barkodlarını, perakende tarayıcı donanımlarıyla test edin uygulaması
  • Görüntülerin tüm çıktı hedeflerinde doğru şekilde gösterildiğini doğrula: dosya sistemi, HTTP yanıtı, veritabanı depolama
  • Gerçek belgeler üzerinde BarcodeReader.Read("file.pdf") kullanarak herhangi bir PDF barkod okuma senaryosunu test edin
  • Proje Linux veya macOS'u hedefliyorsa, platformlar arası yapılarının başarıyla tamamlandığını onayla
  • MAUI yapılarının tamamlanıp tamamlanmadığını ve Android ve iOS hedeflerinde SkiaSharp bağlama hatalarının olmadığını doğrula

IronBarcode'a Geçmenin Temel Faydaları

İkinci Kütüphane Olmadan Barkod Okuma: Okuma yeteneğine ihtiyaç duyan ekipler için en acil kazanç, ikinci kütüphane bağımlılığını ortadan kaldırmaktır. BarcodeReader.Read() aynı paketin içinde, aynı using IronBarCode; ifadesini kullanır ve ek NuGet yüklemeleri gerektirmez. ZXing.Net ve onun kendi bağımlılık grafiği artık projenin bir parçası değildir.

SkiaSharp Sürüm Çatışması Yok: IronBarcode, uygulama koduyla SkiaSharp bağımlılık grafiğini paylaşmaz. MAUI projeleri, Blazor projeleri ve SkiaSharp üzerinde birden çok paketin bir araya geldiği herhangi bir projede, NU1608 uyarıları veya çalışma zamanı bağlama hataları olmadan IronBarcode yüklenebilir. BarcodeLib'in tanıttığı sürüm müzakeresi ortadan kalktı.

Doğrudan Bayt Dizisi Çıkışı: .ToPngBinaryData(), akıcı zincirin sonunda byte[] döndürür.BarcodeLibtarafından bayt dizisi çıktısı için gerekli olan MemoryStream aracı, çubukları oluşturan her denetleyici eylem, hizmet yöntemi ve API işleyicisinden ortadan kaldırıldı.

PDF Barkod İşleme: BarcodeReader.Read() PDF dosyalarını yerel olarak kabul eder. İçine gömülü barkodlar içeren PDF belgeleri üreten uygulamalar, ayrı bir PDF görüntüleme kütüphanesi olmadan bu barkodları okuyabilir. Tüm zincir — üretim, PDF gömme ve okuma —IronBarcode içinde yönetilir.

Ticari Destek ve SLA: IronBarcode, Iron Software'ın belirlenmiş güncelleme takvimine sahip ticari destek modeli ile desteklenmektedir. Yeni .NET sürümleri geldiğinde veya .NET ekosisteminde değişiklikler meydana geldiğinde,IronBarcode ticari SLA'ya bağlı bir zaman çizelgesine göre uyumluluk güncellemeleri yayınlar.

İkinci Bir Kütüphane Olmadan QR Kod Oluşturma: QRCodeWriter, zincirleme yöntemler aracılığıyla logo eklemeyi, renk özelleştirmeyi ve hata düzeltme seviyesi yapılandırmasını destekler.BarcodeLib3.x sadece 1D sembolojileri üretir — QR'ninBarcodeLibile birlikte gerektiği projeler genellikle QRCoder gibi ikinci bir kütüphane eklemişlerdir. QR kodu gereksinimleri genişleyen ekipler, üretim akışlarını değiştirmeden aynı paketin içinde bu özelliklere sahip olur.

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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez