C#'ta Akışlar Olarak Barkodlar Nasıl Oluşturulur IronBarcode Kullanarak
Barcode4NET'ten IronBarcode'a Göç
Bu geçiş rehberi, birBarcode4NETbağımlılığını kaldırmayı ve bunun yerine IronBarcode kullanmayı kapsar. .NET geliştiricilerinin bu geçişi gerçekleştirmesi için adım adım talimatlar, kod karşılaştırmaları ve pratik örnekler sunar. Barcode4NET, resmi bir duyuru olmaksızın kullanım ömrünün sonuna ulaştı — yeni lisansların satışı durduruldu, hiçbir NuGet paketi yayınlanmadı ve kütüphane yalnızca .NET Framework üzerinde çalıştırılabilir. Bu rehber kesin ve özeldir: DLL referansını kaldırmayı, IronBarcode'u NuGet aracılığıyla kurmayı ve oluşturma kodunu dönüştürmeyi kapsar. Ayrıca Barcode4NET'ten hiç mevcut olmayan okuma ve PDF özellikleri de kapsar ve bunlar, geçiş sonrası kullanıma açılır.
Barcode4NET'ten Neden Geçilmeli
Barcode4NET'ten geçen ekipler şu tutarlı tetikleyicileri rapor eder:
Hiçbir Yeni Lisans Kullanılamaz:Barcode4NETlisansları artık ComponentSource veya başka bir kanal aracılığıyla satılmamaktadır. Bir geliştiriciBarcode4NETkullanan bir ekibe katılırsa, onlar için bir yer satın almak için bir mekanizma yoktur. Projeye katılan bir yüklenici veya barkod özellikleri üzerinde çalışması gereken ikinci bir geliştirici, orijinal ürün koşulları altında yasal olarak lisanslanamaz.
Hiçbir NuGet Paketi Yok: Bu önemsiz bir rahatsızlık değildir — modern .NET iş akışlarıyla temel bir uyumsuzluktur. Havuzu klonlayan her geliştiricinin DLL'in nerede olduğunu bilmesi gerekir. CI/CD hatları, bunu bulmak için manuel olarak yapılandırılmalıdır. dotnet restore komutu bunu çözmek için hiçbir şey yapmaz. DLL ya kaynak kontrolüne yerleştirilir ya da özel bir nesne deposunda tutulur, her ikisi de sürekli manuel bakım gerektirir.
Hiçbir .NET 5, 6, 7, 8 veya 9 Desteği Yok: Barcode4NET, yalnızca .NET Framework'ü hedefler. Bir kuruluş hedef çerçevesini net8.0 olarak yükselttiğinde, kütüphane artık referans alınmayan .NET Framework derlemeleriyle derlendiği için derleme bozulur. Hiçbir yama gelmiyor. Ekip, performans için modern .NET'e geçmesi gerekiyorsa, Linux veya Docker dağıtımı için veya uzun dönem Microsoft desteği içinBarcode4NETbir sert bloke edici.
Hiçbir Güvenlik Yaması: Kütüphane, geliştirme durduğunda kaldığı haliyle donmuş durumda. O zamandan beri keşfedilen güvenlik sorunları kalıcı olarak ele alınmamış durumda. Hiçbir sorun izleyici, hiçbir iletişim kurulacak bakımcı ve hiçbir satıcı yanıt süreci yok.
Hiçbir Hata Düzeltme: Belirli bir semiyoloji varyantıyla ilgili bir işleme sorunu veya barkod boyutlarında bir köşe vakası ortaya çıkarsa, çözüm yolu yok. Kütüphane güncellenmeyecek.
Temel Sorun
En yaygın keşif anı bir geliştiricinin .NET modernizasyon projesi sırasında hedef framework'ü yükseltmesidir. Derleme başarısız olur çünkü Barcode4NET'in DLL'i artık yeni hedefte mevcut olmayan .NET Framework derlemelerine karşı derlendi. Sorun, oluşturma API'si değil — ilerleyemeyen temel bağımlılıktır.
//Barcode4NET— locked to .NET Framework, no NuGet package
// Requires manual DLL reference in every .csproj:
// <Reference Include="Barcode4NET">
// <HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
// </Reference>
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
//Barcode4NET— locked to .NET Framework, no NuGet package
// Requires manual DLL reference in every .csproj:
// <Reference Include="Barcode4NET">
// <HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
// </Reference>
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = "ITEM-12345"
barcode.Width = 300
barcode.Height = 100
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
//IronBarcode— NuGet package, .NET Framework 4.6.2 through .NET 9
// dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.SaveAsPng(outputPath);
//IronBarcode— NuGet package, .NET Framework 4.6.2 through .NET 9
// dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.SaveAsPng(outputPath);
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.SaveAsPng(outputPath)
IronBarcode vs Barcode4NET: Özellik Karşılaştırması
| Özellik | Barcode4NET | IronBarcode |
|---|---|---|
| NuGet paketi | Hayır — sadece manuel DLL | Evet (IronBarcode) |
| .NET Framework desteği | Evet (Yalnızca .NET Framework) | Evet (.NET Framework 4.6.2+) |
| .NET Core / .NET 5+ desteği | Hayır | Evet (.NET 5, 6, 7, 8, 9) |
| Linux / macOS desteği | Hayır | Evet |
| Docker desteği | Hayır | Evet |
| Azure / AWS Lambda | Hayır | Evet |
| Barkod oluşturma | Evet | Evet |
| Barkod okumak / taramak | Hayır | Evet (BarcodeReader.Read()) |
| PDF barkod okuma | Hayır | Evet (yerel, ek kütüphane yok) |
| Logolu QR kod | Hayır | Evet (AddBrandLogo()) |
| Akışkan zincirlenebilir API | Hayır | Evet |
| Aktif bakım | Hayır (ömrünün sonu) | Evet |
| Yeni lisanslar mevcut | Hayır | Evet — Lite 749 USD, Plus 1.499 USD, Pro 2.999 USD, Unlimited 5.999 USD |
| Güvenlik yamaları | Hayır | Evet |
| CI/CD hattı entegrasyonu | Manuel DLL kopyalama adımları | Standart dotnet restore |
Hızlı Başlangıç: Barcode4NET'ten IronBarcode'a Geçiş
Geçiş bu öncü adımlarla hemen başlayabilir.
Adım 1: NuGet Paketini Değiştirin
Barcode4NET hiçbir zaman bir NuGet paketi olarak dağıtılmadı, bu nedenle bir dotnet remove package komutu yok. Manuel olarak kaldırın.
DLL'i kaynak kontrolden silin ve silme işlemini evreleyin:
git rm -r ThirdParty/Barcode4NET/
git rm -r ThirdParty/Barcode4NET/
Her .csproj dosyasından <Reference> elemanını kaldırın. Güncellenmesi gereken tüm dosyaları bulmak için çözüm genelinde arama yapın:
grep -rl "Barcode4NET" --include="*.csproj" .
grep -rl "Barcode4NET" --include="*.csproj" .
Bunu içeren her .csproj dosyasından bu elemanı kaldırın:
<Reference Include="Barcode4NET">
<HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
</Reference>
<Reference Include="Barcode4NET">
<HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
</Reference>
Daha sonra IronBarcode'u yükleyin:
dotnet add package IronBarcode
dotnet add package IronBarcode
Tek bir komut, IronBarcode'u ekler ve tüm bağımlılıkları çözer. Hiçbir DLL yönetimi, nesne depoları, manuel kopyalama adımları yok.
Adım 2: Ad Alanlarını Güncelleyin
Barcode4NET kullanan her dosyanın üst kısmındaki eski using yönergesini değiştirin:
// Before
using Barcode4NET;
// After
using IronBarCode;
// Before
using Barcode4NET;
// After
using IronBarCode;
Imports Barcode4NET
' After
Imports IronBarCode
Adım 3: Lisansa İzin Verin
Uygulama başlangıcında lisans başlatma ekleyin — Program.cs, Startup.cs veya uygulamanızın başlatıldığı herhangi bir yerde:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Kod Göç Örnekleri
Temel Etiket Üretimi
En yaygınBarcode4NETdeseni: bir nesne oluşturun, özellikleri ayarlayın, bir Bitmap almak için GenerateBarcode() çağırın, ardından kaydedin.
Barcode4NET Yaklaşımı:
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public void SaveLabel(string sku, string outputPath)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
}
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;
public void SaveLabel(string sku, string outputPath)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = sku;
barcode.Width = 400;
barcode.Height = 120;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
}
Imports Barcode4NET
Imports System.Drawing
Imports System.Drawing.Imaging
Public Sub SaveLabel(sku As String, outputPath As String)
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = sku
barcode.Width = 400
barcode.Height = 120
Dim barcodeImage As Bitmap = barcode.GenerateBarcode()
barcodeImage.Save(outputPath, ImageFormat.Png)
End Sub
IronBarcode Yaklaşımı:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public void SaveLabel(string sku, string outputPath)
{
BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.SaveAsPng(outputPath);
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public void SaveLabel(string sku, string outputPath)
{
BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.SaveAsPng(outputPath);
}
Imports IronBarCode
Public Sub SaveLabel(sku As String, outputPath As String)
BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.SaveAsPng(outputPath)
End Sub
Özellik atama bloğu, tek bir akıcı zincir halinde çöker. .ResizeTo() çağrısı, Width ve Height özellik atamalarını değiştirir. .SaveAsPng() hem GenerateBarcode() hem de ayrı barcodeImage.Save() çağrısını değiştirir. Ek üretim seçenekleri için IronBarcode barkod üretim dökümantasyonuna bakın.
WinForms PictureBox Görüntüleme
Barcode4NET kodunuz Bitmap dönüş değerini doğrudan bir PictureBox veya benzer bir kontrol ile atadıysa, bunun yerine MemoryStream yoluyla bir bayt dizisi yükleyeceksiniz.
Barcode4NET Yaklaşımı:
using Barcode4NET;
using System.Drawing;
private void RefreshBarcodeDisplay(string data)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = data;
barcode.Width = 300;
barcode.Height = 100;
pictureBox1.Image = barcode.GenerateBarcode();
}
using Barcode4NET;
using System.Drawing;
private void RefreshBarcodeDisplay(string data)
{
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = data;
barcode.Width = 300;
barcode.Height = 100;
pictureBox1.Image = barcode.GenerateBarcode();
}
Imports Barcode4NET
Imports System.Drawing
Private Sub RefreshBarcodeDisplay(data As String)
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.Code128
barcode.Data = data
barcode.Width = 300
barcode.Height = 100
pictureBox1.Image = barcode.GenerateBarcode()
End Sub
IronBarcode Yaklaşımı:
using IronBarCode;
using System.Drawing;
using System.IO;
private void RefreshBarcodeDisplay(string data)
{
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.ToPngBinaryData();
using var stream = new MemoryStream(pngBytes);
pictureBox1.Image = Image.FromStream(stream);
}
using IronBarCode;
using System.Drawing;
using System.IO;
private void RefreshBarcodeDisplay(string data)
{
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.ToPngBinaryData();
using var stream = new MemoryStream(pngBytes);
pictureBox1.Image = Image.FromStream(stream);
}
Imports IronBarCode
Imports System.Drawing
Imports System.IO
Private Sub RefreshBarcodeDisplay(data As String)
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.ToPngBinaryData()
Using stream As New MemoryStream(pngBytes)
pictureBox1.Image = Image.FromStream(stream)
End Using
End Sub
MemoryStream adımı tek yapısal eklemedir. Diğer her şey, özellik atama modelinden akıcı zincire doğrudan bir tercümedir.
QR Kod Oluşturma
Barcode4NET Yaklaşımı:
using Barcode4NET;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.QRCode;
barcode.Data = "https://example.com/product/99";
barcode.Width = 300;
barcode.Height = 300;
Bitmap qrImage = barcode.GenerateBarcode();
qrImage.Save("qr.png", System.Drawing.Imaging.ImageFormat.Png);
using Barcode4NET;
var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.QRCode;
barcode.Data = "https://example.com/product/99";
barcode.Width = 300;
barcode.Height = 300;
Bitmap qrImage = barcode.GenerateBarcode();
qrImage.Save("qr.png", System.Drawing.Imaging.ImageFormat.Png);
Imports Barcode4NET
Imports System.Drawing.Imaging
Dim barcode As New Barcode4NET.Barcode()
barcode.Symbology = Symbology.QRCode
barcode.Data = "https://example.com/product/99"
barcode.Width = 300
barcode.Height = 300
Dim qrImage As Bitmap = barcode.GenerateBarcode()
qrImage.Save("qr.png", ImageFormat.Png)
IronBarcode Yaklaşımı:
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com/product/99", 300)
.SaveAsPng("qr.png");
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com/product/99", 300)
.SaveAsPng("qr.png");
Imports IronBarCode
QRCodeWriter.CreateQrCode("https://example.com/product/99", 300) _
.SaveAsPng("qr.png")
IronBarcode, QR kodları için hataya dayanıklılık seviyesi ve marka logosu gömme gibi QR'ye özel seçeneklere erişim sağlayan özel bir QRCodeWriter sınıfı kullanır. QRCodeWriter.CreateQrCode() için ikinci parametre, kare görüntünün piksel boyutudur.
Barkod Okuma Ekleme
Barcode4NET'in bir okuma API'si yoktu. Uygulamanız taranan belgeleri işliyorsa, oluşturulan barkodları doğruluyorsa veya PDF faturalarından veri çıkarıyorsa, bu yetenek geçiş sonrası hemen kullanılabilir, ikinci bir kitaplık eklemeden.
Barcode4NET Yaklaşımı:
//Hayırreading API available in Barcode4NET.
// Required a separate library (e.g., ZXing.Net) to decode barcodes.
//Hayırreading API available in Barcode4NET.
// Required a separate library (e.g., ZXing.Net) to decode barcodes.
' Hayırreading API available in Barcode4NET.
' Required a separate library (e.g., ZXing.Net) to decode barcodes.
IronBarcode Yaklaşımı:
using IronBarCode;
// Read a barcode from an image file
var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Symbology: {result.Format}");
}
// Read all barcodes from a PDF — pages are handled automatically
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
using IronBarCode;
// Read a barcode from an image file
var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Symbology: {result.Format}");
}
// Read all barcodes from a PDF — pages are handled automatically
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Imports IronBarCode
' Read a barcode from an image file
Dim results = BarcodeReader.Read("scanned-label.png")
For Each result In results
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Symbology: {result.Format}")
Next
' Read all barcodes from a PDF — pages are handled automatically
Dim pdfResults = BarcodeReader.Read("invoice-batch.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
PDF'lerden okumak için ek bir kitaplık gerekmiyor. BarcodeReader.Read() hem görüntü hem de PDF girdilerini doğal olarak işler. Okuma hızı ve çoklu barkod algılama dahil yapılandırma seçenekleri için barkod okuma dökümantasyonuna bakın.
Hedef Framework'ü Yükseltme
Barcode4NET'i kaldırdıktan sonra .NET Framework kısıtlaması da ortadan kalkar. TargetFramework elemanını .csproj içinde güncelleyin:
Barcode4NET Yaklaşımı:
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
IronBarcode Yaklaşımı:
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
IronBarcode, .NET Framework 4.6.2'den .NET 9'a kadar destekler, bu nedenle hedef framework, organizasyonunuzun hedeflediklerine herhangi bir barkod kütüphanesi kısıtlaması olmadan yükseltilebilir.
ASP.NET Core Denetleyicisi — Barkodu Görüntü Yanıtı Olarak Döndürmek
Bir Web Forms uygulamasını aynı anda modernize ediyorsanız, işte bir denetleyici aksiyonundan bir barkod görüntüsünü döndürmek için ASP.NET Core deseni:
Barcode4NET Yaklaşımı:
//Barcode4NETwas not compatible with ASP.NET Core.
// Web Forms HttpHandler was required for image delivery.
//Barcode4NETwas not compatible with ASP.NET Core.
// Web Forms HttpHandler was required for image delivery.
'Barcode4NET was not compatible with ASP.NET Core.
'Web Forms HttpHandler was required for image delivery.
IronBarcode Yaklaşımı:
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/barcodes")]
public class BarcodesController : ControllerBase
{
[HttpGet("{data}")]
public IActionResult Get(string data)
{
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
return File(pngBytes, "image/png");
}
}
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/barcodes")]
public class BarcodesController : ControllerBase
{
[HttpGet("{data}")]
public IActionResult Get(string data)
{
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(400, 120)
.ToPngBinaryData();
return File(pngBytes, "image/png");
}
}
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("api/barcodes")>
Public Class BarcodesController
Inherits ControllerBase
<HttpGet("{data}")>
Public Function [Get](data As String) As IActionResult
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(400, 120) _
.ToPngBinaryData()
Return File(pngBytes, "image/png")
End Function
End Class
.ToPngBinaryData() doğrudan bir byte[] döndürür ve bu da File() sonucuna herhangi bir ara dönüşüm olmadan yerleşir.
Barcode4NETAPI'den IronBarcode'a Haritalama Referansı
| Barcode4NET | IronBarcode |
|---|---|
new Barcode4NET.Barcode() |
BarcodeWriter.CreateBarcode(data, encoding) |
barcode.Symbology = Symbology.Code128 |
BarcodeEncoding.Code128 (parametre CreateBarcode) |
barcode.Data = "ITEM-12345" |
CreateBarcode() ilk parametresi |
barcode.Width = 300; barcode.Height = 100 |
.ResizeTo(300, 100) |
barcode.GenerateBarcode() Bitmap döndürür |
.SaveAsPng(path) / .ToPngBinaryData() |
Symbology.QRCode |
BarcodeEncoding.QRCode |
Symbology.Code39 |
BarcodeEncoding.Code39 |
Symbology.EAN13 |
BarcodeEncoding.EAN13 |
Symbology.UPCA |
BarcodeEncoding.UPCA |
<Reference Include="Barcode4NET"> |
<PackageReference Include="IronBarcode" /> |
.NET Framework only |
.NET Framework 4.6.2 through .NET 9 |
| Yalnızca üretim | Üretim + okuma (BarcodeReader.Read()) |
| PDF desteği yok | BarcodeReader.Read("doc.pdf") yerel |
Yaygın Göç Sorunları ve Çözümleri
Sorun 1: DLL Referansları için dotnet remove package yok
Barcode4NET:Barcode4NEThiçbir zaman bir NuGet paketi olmadığından, onu kaldıracak bir paket yöneticisi komutu yok. <Reference Include="Barcode4NET"> elemanı her .csproj dosyasından manuel olarak kaldırılmalı ve DLL dizini kaynak kontrolünden açıkça silinmelidir.
Çözüm: DLL'i referans alan tüm proje dosyalarını bulmak için bir arama çalıştırın ve ardından öğeleri elle kaldırın:
grep -rn "Barcode4NET" --include="*.csproj" .
grep -rn "Barcode4NET" --include="*.csproj" .
Yeni NuGet referansının yanına DLL referansını bırakmayın — bunu yapmak, belirsiz tip çözümlemelerinden dolayı derleme hatalarına neden olur.
Konu 2: Bitmap'ten Byte Dizisine Dönüş Türü Değişikliği
Barcode4NET: GenerateBarcode() System.Drawing.Bitmap döndürür. Dönüş değerini Bitmap tipindeki bir değişkene atayan veya bir Bitmap bekleyen herhangi bir metoda — örneğin bir PictureBox — geçiren kod güncellenmelidir.
Çözüm: .GenerateBarcode() atamalarını .ToPngBinaryData() ile değiştirin ve çağrı yerinde bir MemoryStream yoluyla bayt dizisini yükleyin:
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.ToPngBinaryData();
using var stream = new MemoryStream(pngBytes);
pictureBox1.Image = Image.FromStream(stream);
byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.ToPngBinaryData();
using var stream = new MemoryStream(pngBytes);
pictureBox1.Image = Image.FromStream(stream);
Imports System.IO
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.ToPngBinaryData()
Using stream As New MemoryStream(pngBytes)
pictureBox1.Image = Image.FromStream(stream)
End Using
Çözüm genelinde .GenerateBarcode() aramak, güncellenmesi gereken tüm çağrı yerlerini bulacaktır.
Konu 3: Semboloji Tanılama Namespace Değişikliği
Barcode4NET: Symbology.Code128, Symbology.QRCode, Symbology.Code39 ve benzeri değerleri Barcode4NET ad alanından kullanır.
Çözüm: BarcodeEncoding enum değerleri ile değiştirin. Tüm ortak isimler korunur — yalnızca tür adı değişir:
// Before
barcode.Symbology = Symbology.Code128;
// After
BarcodeEncoding.Code128 // passed as parameter to CreateBarcode()
// Before
barcode.Symbology = Symbology.Code128;
// After
BarcodeEncoding.Code128 // passed as parameter to CreateBarcode()
' Before
barcode.Symbology = Symbology.Code128
' After
BarcodeEncoding.Code128 ' passed as parameter to CreateBarcode()
Bir Symbology. ile BarcodeEncoding.'in çözüm genelinde kapsamlı bir bul-ve-değiştir'i çoğu durumu kapsar. Her değiştirmeyi gözden geçirerek bağlamı doğrulayın.
Konu 4: Genişlik ve Yükseklik Artık Metot, Özellik Değil
Barcode4NET: Boyut, iki ayrı özellik ataması olarak yapılandırılmış: barcode.Width = 300; barcode.Height = 100;
Çözüm: .ResizeTo(width, height) zincirli metodu kullanın. Bu, sözdizimsel olarak yeterince farklıdır, basit bir bul-ve-değiştir catch'ini yakalamayacaktır — barkodla ilgili kodda .Width = ve .Height = arayın ve her oluşumu güncelleyin:
// Before
barcode.Width = 300;
barcode.Height = 100;
// After — chained on the CreateBarcode call
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.SaveAsPng(outputPath);
// Before
barcode.Width = 300;
barcode.Height = 100;
// After — chained on the CreateBarcode call
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(300, 100)
.SaveAsPng(outputPath);
' Before
barcode.Width = 300
barcode.Height = 100
' After — chained on the CreateBarcode call
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(300, 100) _
.SaveAsPng(outputPath)
Barcode4NETGeçiş Kontrol Listesi
Geçiş Öncesi Görevler
Başlamadan önce çözüm genelinde bu aramaları yapın. Geçiş kapsamının doğru bir resmini sağlarlar:
# Find allBarcode4NETusages in source files
grep -rn "Barcode4NET" --include="*.cs" .
# Find the using directive
grep -rn "using Barcode4NET" --include="*.cs" .
# Find object creation
grep -rn "new Barcode4NET.Barcode()" --include="*.cs" .
# Find Symbology enum usage
grep -rn "Symbology\." --include="*.cs" .
# Find GenerateBarcode calls
grep -rn "\.GenerateBarcode()" --include="*.cs" .
# Find the DLL reference in project files
grep -rn "Barcode4NET" --include="*.csproj" .
# Find DLL references in build scripts
grep -rn "Barcode4NET" --include="*.yml" .
grep -rn "Barcode4NET" --include="*.yaml" .
grep -rn "ThirdParty/Barcode4NET" .
# Find allBarcode4NETusages in source files
grep -rn "Barcode4NET" --include="*.cs" .
# Find the using directive
grep -rn "using Barcode4NET" --include="*.cs" .
# Find object creation
grep -rn "new Barcode4NET.Barcode()" --include="*.cs" .
# Find Symbology enum usage
grep -rn "Symbology\." --include="*.cs" .
# Find GenerateBarcode calls
grep -rn "\.GenerateBarcode()" --include="*.cs" .
# Find the DLL reference in project files
grep -rn "Barcode4NET" --include="*.csproj" .
# Find DLL references in build scripts
grep -rn "Barcode4NET" --include="*.yml" .
grep -rn "Barcode4NET" --include="*.yaml" .
grep -rn "ThirdParty/Barcode4NET" .
Her desen için dosya sayısını not edin. Koordinat bazlı çizim kodunu, yazı tipi kullanım desenlerini ve DLL'i kopyalayan herhangi bir yapı betiği adımını belgeleyin.
Kod Güncelleme Görevleri
ThirdParty/Barcode4NET/kaynak kontrolünden silin (git rm -r)- Tüm
.csprojdosyalarından<Reference Include="Barcode4NET">'ı kaldırın - Build betiklerinden ve CI/CD hattı dosyalarından manuel DLL kopyalama adımlarını kaldırın
- Çözümdeki her proje için
dotnet add package IronBarcodeçalıştırın - Uygulama başlangıcına
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";ekleyin - Tüm
.csdosyalarındakiusing Barcode4NET;ileusing IronBarCode;değiştirin new Barcode4NET.Barcode()bloklarınıBarcodeWriter.CreateBarcode()çağrıları ile değiştirinSymbology.X'iBarcodeEncoding.Xile her yerde değiştirinbarcode.Width = N; barcode.Height = M;with.ResizeTo(N, M).GenerateBarcode()atamalarını.SaveAsPng()veya.ToPngBinaryData()ile değiştirinPictureBoxveya diğer görüntü kontrol atamalarınıMemoryStreamdeseni kullanmak üzere güncelleyinnet4xx'dan yükseltiliyorsa.csprojdosyalarındakiTargetFrameworkgüncelleyin- Tam bir derleme çalıştırın ve kalan derleme hatalarını düzeltin
Geçiş Sonrası Testler
- Görsel barkod çıktısını bilinen iyi örneklerle karşılaştırarak görünümü doğrulayın
- Barkod tarayıcı donanımının tüm etkilenen semiyolojilerden oluşturulan barkodları okuyabildiğini doğrulayın
- Code128, Code39, EAN-13, UPC-A ve QR Kod için beklenen çıktıyla
BarcodeEncodingdeğerlerini test edin MemoryStreamdeseni WinForms kontrollerinde gerektiği gibi düzgün görüntüleniyor mu doğrulayın- CI/CD hattının yalnızca
dotnet restorekullanarak başarıyla tamamlandığından emin olun, manuel DLL adımları olmadan - Taşıma işleminin bir parçası olarak
BarcodeReader.Read()eklenmişse barkod okuma işlevselliğini test edin
IronBarcode'a Geçmenin Temel Faydaları
Yeni Takım Üyelerine Lisans Sağlama Yeteneği Geri Kazandırıldı: IronBarcode, belirlenmiş fiyat puanlarında mevcut sürekli lisanslarla aktif bir ticari üründür. Yeni geliştiriciler, yükleniciler ve ekip eklentileri hemen lisanslanabilir. Bir geliştiricinin ekibe katılıp barkodla ilgili kod üzerinde yasal olarak çalışamayacağı durum ortadan kalkar.
Standart NuGet Bağımlılık Yönetimi: Taşıma işleminden sonra, dotnet restore her şeyi yönetir. Yeni geliştiriciler havuzu klonlar, paketleri geri yüklerler ve DLL konumları, nesne depoları veya manuel kopyalama prosedürleri hakkında hiçbir bilgiye ihtiyaç duymadan derler. Barcode4NET'in her bir CI/CD hattında ve giriş akışında oluşturduğu sürtünme ortadan kalkar.
Full .NET Sürüm Özgürlüğü:Barcode4NETkısıtlamasının kaldırılması .NET modernizasyon projelerini engellemez. Hedef framework, herhangi bir barkod kütüphanesi kısıtlaması olmadan .NET 8, .NET 9 veya gelecekteki sürümlere yükseltilebilir. Linux dağıtımı, Docker konteynerleştirme ve bulut sunucusuz çalışma zamanları tümüyle kullanılabilir hale gelir.
İkinci Bir Kütüphane Olmadan Barkod Okuma: BarcodeReader.Read() görüntülerden ve PDF'lerden yerel olarak barkodları çözer. Daha önce Barcode4NET'i üretim için veya ZXing.Net ya da okuma için başka bir kitaplıkla birleştiren ekipler, tek bir sürdürülen bağımlılığa konsolide olabilir. PDF barkod okumak için ek bir PDF kütüphanesi gerekmiyor.
Güvenlik ve Uyumluluk Duruşu: IronBarcode, düzenli olarak güvenlik yamaları alır ve mevcut CVE veritabanlarına karşı takip edilir. Yazılım MALZEME faturaları denetimleri artık bir satıcı yanıt süreci olmadan ömrü sona ermiş bir ticari bağımlılık olarak Barcode4NET'i yüzeye çıkarmaz. Geçiş tamamlandığı an bu durum ortadan kalkar.
Aktif Geliştirme Kadansı: IronBarcode, yeni .NET sürümleriyle uyumlu düzenli güncellemeler sunar. Gelecekteki .NET sürümleri için uyumluluk güncellemeleri paketin üzerinden teslim edilir, bu yüzden kütüphane sessiz kalan bir satıcı durumunda dondurulmayacak.
Sıkça Sorulan Sorular
Barcode4.NET'ten IronBarcode'a neden geçmeliyim?
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.
Barcode4.NET 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.
Barcode4.NET'ten IronBarcode'a geçişte ne kadar kod değişir?
Ç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 Barcode4.NET hem de IronBarcode kurulu kalmalı mı?
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, Barcode4.NET ile karşılaştırıldığında Docker dağıtımını nasıl basitleştirir?
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, Barcode4.NET'ten geçişten 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.
Barcode4.NET'ten IronBarcode'a geçişte hangi sonuç özellikleri değişir?
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.

