フッターコンテンツにスキップ
ビデオ

Migrating from OnBarcode to IronBarcode

OnBarcodeからIronBarcodeへの移行

このガイドでは、OnBarcodeからIronBarcodeへの移行手順全体を網羅しています。 本書では、3段階のセットアップ変更について解説し、一般的なパターンごとに変更前後のコード例を提供し、OnBarcode APIをIronBarcodeの同等の機能にマッピングし、移行中に発生する問題点を文書化し、移行完了とみなす前にコードベースを監査するための検索語のチェックリストを提供します。

OnBarcodeから移行する理由

二重SKU調達オーバーヘッド:OnBarcodeはGenerator SDK(LinearのみおよびLinear + 2Dの階層)のおよびReader SDKを別々に価格設定された製品として枠外化しています。 両方の機能を必要とする組織は、使用しているシンボロジーに正しいGenerator階層を選び、次に別途Readerを購入するために、2つのSKUに対して2つの調達プロセスを完了しなければなりません。 摩擦は2つの購入にわたる重複であり、単一のラインアイテムではありません。

分割製品によるオーバーヘッド:生成と読み取りは別々の製品であり、それぞれに別々のNuGetパッケージ、別々のライセンス 名前空間、別々のライセンス キー、および別々のバージョン スケジュールが存在します。 両方の製品を使用するプロジェクトでは、起動時に2つのライセンスキーを設定し、アップグレード時に2つのパッケージバージョンを追跡し、2つの独立したリリースサイクルを把握しておく必要があります。 当初は生成のみを目的としていたプロジェクトに読み取り要件が追加された場合、2つ目の製品についても調達と統合のプロセス全体を繰り返す必要がある。

PDFワークフローのギャップ: OnBarcodeは、PDFドキュメントからバーコードを読み取るためのネイティブサポートを提供していません。 請求書、出荷明細書、発注書、またはアーカイブスキャンに埋め込まれたバーコードを処理するプロジェクトでは、別途PDFから画像へのレンダリングライブラリを取得し、それをパイプラインに統合し、ライセンスを個別に管理し、レンダリングされたページを1ページずつOnBarcode Reader SDKに渡す必要があります。これにより、本来であれば1つの依存関係で済むはずのソリューションが、2つの依存関係を持つソリューションになってしまいます。

API 冗長性: オンバーコード ジェネレーターは、Barcode オブジェクトをインスタンス化し、BarHeight などの妥当なデフォルトを含む複数のプロパティを割り当て、生成メソッドを呼び出す必要があります。 静的ファクトリAPIを使用すれば、同じ出力をはるかに少ないコードで生成できます。 バッチ生成全体にわたって繰り返されるプロパティ割り当てパターンは、レビューと保守が必要な大量の反復コードを生成する。

基本的な問題

生成と読み取りの両方を必要とするプロジェクトにとって、デュアルライセンス構成は最も直接的な問題点となる。 OnBarcodeは起動時に、2つの異なるライセンスネームスペースに対して2つの別々の呼び出しを行う必要があります。

// OnBarcode: two products, two DLL references, no runtime key
// オンバーコード uses 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
// オンバーコード uses 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
' オンバーコード uses pre-licensed DLLs — the purchased DLL is already activated.
' There is no runtime SetLicense() call; the license is baked into the downloaded assembly.
Imports OnBarcode.Barcode
Imports OnBarcode.Barcode
$vbLabelText   $csharpLabel

IronBarcodeはこれを単一のプロパティ割り当てに集約し、生成、読み取り、PDFサポート、バッチ操作といったすべての機能を1つのキーで網羅します。

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

アプリケーション内のすべてのバーコード操作(PDFの生成、読み取り、処理のいずれであっても)は、単一の構成で実行されます。

IronBarcodeとOnBarcode:機能比較

フィーチャー オンバーコード IronBarcode
バーコード生成 はい はい
バーコード読み取り 別商品、別売り 含まれるもの
PDFバーコード読み取り ネイティブサポートされていません ネイティブ — 外部ライブラリは不要
読み取り時のフォーマット自動検出 いいえ — 明示的な BarcodeType[] が必要です はい
結果メタデータ(形式、位置、ページ) 不可 — 生の string[] のみ はい — フルメタデータ付きの BarcodeResults
ロゴオーバーレイ付きQRコード 手動のGDI+コードが必要です 内蔵
公開価格 はい — 各製品ページ(Generator層+別途Reader) はい — 1枚のページがすべての機能をカバー
すべての機能に対応する単一のライセンスキー いいえ、製品ごとにキーが異なります。 はい
NuGetディストリビューション 利用可能、従来のDLLダウンロードと共に 発売当初から利用可能
ソースコードへのアクセス 無制限ティアのみ 不可
.NET 8 / 9 のサポート はい はい
Docker / クラウドライセンス構成 マニュアル 環境変数のサポート

クイックスタート:OnBarcodeからIronBarcodeへの移行

ステップ1:OnBarcodeパッケージの参照を削除します

プロジェクトでNuGetパッケージを使用している場合は、両方を削除してください。

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

プロジェクトが古い DLL ベースの配布を使用している場合、.csproj から手動参照ブロックも削除してください。


<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

lib/ ディレクトリから DLL ファイルを削除するか、それらが保存されている場所から削除します。 新しいNuGetパッケージと並行して古いアセンブリを残しておくと、コンパイル時に名前空間の競合が発生します。

ステップ2: IronBarcodeを追加する

1つのパッケージで、生成、読み込み、PDFサポートがすべてカバーされます。

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

閲覧には別のパッケージは必要ありません。 PDFサポートには、別途パッケージは必要ありません。

ステップ3:名前空間を更新し、デュアルライセンス構成を置き換える

OnBarcode の 2 つの使用指示を、単一のIronBarcodeインポートに置き換えます。

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

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

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

2つのDLL参照を単一のキー割り当てに置き換えます。 これをアプリケーションの起動直後、バーコード操作が実行される前に一度だけ配置してください。

// Remove the オンバーコード DLL references and using directives
// Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove the オンバーコード DLL references and using directives
// Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove the オンバーコード DLL references and Imports statements
' Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

コード移行の例

コード128バーコード生成

基本的なコード128の事例は、プロパティ割り当てパターンと静的ファクトリパターンの違いを示しています。

OnBarcodeアプローチ:

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のアプローチ:

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

データとエンコーディングタイプは CreateBarcode への引数として渡されます。 解像度やバーの高さといった特性は、スキャン可能な出力を生成するために必須ではありません。 デフォルト設定はほとんどの用途に適しています。 カスタム寸法が必要な場合、CreateBarcodeSaveAsPng 間のチェーン呼び出しとして追加でき、可変オブジェクト状態を導入しません。

ロゴ付きQRコード生成

ロゴ付き QR コードは、画像オーバーレイステップのために オンバーコード が System.Drawing にフォールバックする必要があります。IronBarcode ではこれを組み込みの操作として提供しています。

OnBarcodeアプローチ:

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のアプローチ:

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

エラー訂正レベル、ロゴサイズ計算、画像合成は内部で処理されます。 System.Drawing 依存性は必要ありません。

画像からバーコードを読み取る

画像ファイルからの読み込みは、製品統合を最も明確に示している。 OnBarcodeでは、読み取りには別途Reader SDK、別途ライセンス認証、および明示的なフォーマット指定が必要です。 IronBarcodeでは、既に設定されている同じパッケージとキーを使用して、単一の静的呼び出しを行うだけで済みます。

OnBarcodeアプローチ:

using OnBarcode.Barcode;

// オンバーコード reader 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;

// オンバーコード reader 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

' オンバーコード reader 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のアプローチ:

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

インスタンスの作成、フォーマット配列、個別のライセンス設定は不要です。 フォーマットは自動的に検出されます。 各結果には、デコードされた値と検出されたフォーマットが含まれています。 読み取りオプションやサポートされている画像タイプの詳細については、 "画像からバーコードを読み取る方法"ガイドを参照してください。

PDFファイルからバーコードを読み取る

この移行例は、サードパーティライブラリを使用してPDFページを画像にレンダリングしてから、それらの画像をOnBarcode Reader SDKに渡していたチームに適用されます。

OnBarcodeアプローチ:

// オンバーコード has 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);
}
// オンバーコード has 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

' オンバーコード 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のアプローチ:

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

レンダリング手順なし、外部PDFライブラリなし、フォーマット配列なし。 PDFバーコード読み取り機能は、すべてのページを自動的に処理し、各結果にページ番号を含めます。

バッチ生成

複数のアイテムに対してバーコードを生成する場合も、単一アイテムを生成する場合と同じパターンの違いが生じます。

OnBarcodeアプローチ:

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のアプローチ:

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

オンバーコード APIとIronBarcodeのマッピングリファレンス

オンバーコード IronBarcode ノート
プリライセンスされたDLL(ランタイムキー呼び出しなし) IronBarCode.License.LicenseKey = "key" 財産の譲渡; 起動時に一度だけ呼び出される
2つのDLL参照(ジェネレータ+リーダー) 単一のNuGetパッケージ 1つのパッケージで全機能をカバー
new Linear() BarcodeWriter.CreateBarcode(data, encoding) 静的ファクトリー; オブジェクトインスタンスなし
barcode.BarcodeType = BarcodeType.CODE128 BarcodeEncoding.Code128 をパラメータとして使用 CreateBarcode に第二引数として渡されます
barcode.Data = "..." CreateBarcode の最初のパラメータ データは最初の引数です
barcode.drawBarcode("file.png") .SaveAsPng("file.png") フォーマット名付きメソッド
barcode.drawBarcode("file.jpg") .SaveAsJpeg("file.jpg") フォーマット名付きメソッド
barcode.drawBarcode("file.pdf") .SaveAsPdf("file.pdf") ネイティブPDF出力
BarcodeType.CODE128 BarcodeEncoding.Code128 定数が改名
BarcodeType.QRCode BarcodeEncoding.QRCode 直接マッピング
BarcodeType.EAN13 BarcodeEncoding.EAN13 直接マッピング
BarcodeType.DataMatrix BarcodeEncoding.DataMatrix 直接マッピング
BarcodeType.PDF417 BarcodeEncoding.PDF417 直接マッピング
new BarcodeScanner() { BarcodeTypes = [...] } BarcodeReader.Read(path) — 静的 インスタンスなし、フォーマット指定なし
scanner.Scan("file.png")string[] BarcodeReader.Read("file.png")BarcodeResults より豊富な戻り値型
results[0] (生の文字列) result.Value デコードされた文字列値
該当なし result.Format 検出されたフォーマット - OnBarcodeでは利用できません
該当なし result.PageNumber PDFのページソースには次のように書かれています。
該当なし BarcodeReader.Read("document.pdf") PDFをネイティブで閲覧できます。 OnBarcodeに相当するものはありません
QRロゴ用の手動GDI+オーバーレイ QRCodeWriter.CreateQrCodeWithLogo() ロゴサポート内蔵
BarcodeType[] 設定 不要 自動検出がデフォルトです

一般的な移行の問題と解決策

問題1:DLL参照の競合

OnBarcode: レガシー DLL ディストリビューションのプロジェクトは、.csproj 内に <Reference> 要素を持ち、lib\OnBarcode.Barcode.dll または類似のパスを指しています。 IronBarcodeを追加した際に古いDLLがディスク上に残っている場合、コンパイラは同じ名前空間プレフィックスを提供する2つのアセンブリを認識し、あいまいな参照エラーを生成します。

解決策: dotnet add package IronBarcode を実行する前に、.csproj から <ItemGroup> 参照ブロックを削除してください。 ディスクからDLLファイルを削除してください。 クリーンビルドを実行して、古いアセンブリ参照が残っていないことを確認してください。

# Search for lingering オンバーコード DLL references in project files
grep -r "OnBarcode" --include="*.csproj" .
grep -r "OnBarcode" --include="*.props" .
# Search for lingering オンバーコード DLL references in project files
grep -r "OnBarcode" --include="*.csproj" .
grep -r "OnBarcode" --include="*.props" .
SHELL

問題2:段階的移行中の型名の競合

OnBarcode: リーダーネームスペースは BarcodeScanner という名前のクラスをエクスポートします。 IronBarcode には BarcodeReader という静的なクラスがあります。 これらの名前は直接競合しませんが、OnBarcode.Barcode.ReaderIronBarCode を同時にインポートするファイルは BarcodeType 列挙型の曖昧性が発生する可能性があります — オンバーコード はフォーマット選択のために BarcodeType を定義し、IronBarcode は BarcodeEncoding を使用します。 移行中に両方のネームスペースをアクティブに保つと、BarcodeType 参照にコンパイルエラーが発生します。

解決策: 各ファイルの移行をアトミックに完了します — 同じ編集で using OnBarcode.Barcode.Reader ディレクティブを削除し、using IronBarCode を追加します。 どちらのusingディレクティブもファイル内に残さないでください。段階的なアプローチが必要な場合は、一時的に完全修飾名を使用してください。

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

問題3:バーコードタイプの配列削除

OnBarcode:リーダーには reader.BarcodeTypes = new BarcodeType[] { ... } が機能するようにします。 リーダーコードを移行する開発者は、フォーマットを明示的に指定する習慣を持ち、 IronBarcodeで同等の設定を探すことがあります。

解決策:書式指定を完全に削除する。 BarcodeReader.Read はサポートされているすべてのフォーマットに対して自動検出を行います。 設定は必要なく、IronBarcode では BarcodeType[] に相当するものが必要ないため存在しません。

// 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移行チェックリスト

マイグレーション前のタスク

変更を加える前に、コードベースを監査して、OnBarcodeの使用箇所をすべて特定してください。

# Find all オンバーコード namespace 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 all オンバーコード namespace 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

どのファイルが生成のみを使用し、どのファイルが読み取りのみを使用し、どのファイルが両方を使用するかを文書化する。 NuGet パッケージ参照の代わりに手動 <Reference> DLL ブロックを含むファイルに注意してください。

コード更新タスク

  1. OnBarcode.Barcode.Generator NuGet パッケージを削除
  2. OnBarcode.Barcode.Reader NuGet パッケージを削除
  3. .csproj ファイルから手動 <Reference> DLL エントリをすべて削除
  4. リポジトリからOnBarcode DLLファイルを削除します。
  5. dotnet add package IronBarcode を実行
  6. 各ファイルで using OnBarcode.Barcodeusing IronBarCode に置き換え
  7. 各ファイルで using OnBarcode.Barcode.Readerusing IronBarCode に置き換え
  8. オンバーコード DLL <Reference> エントリ(ジェネレーターとリーダー)を両方削除 — 置き換えるランタイムライセンス呼び出しはありません
  9. アプリケーションの起動時に IronBarCode.License.LicenseKey = "YOUR-KEY" を一度追加
  10. new Linear() または new QRCode() + プロパティ割り当てブロックを BarcodeWriter.CreateBarcode(data, encoding) に変換
  11. barcode.drawBarcode("file.png").SaveAsPng("file.png") (または適切なフォーマットメソッド) に置き換え
  12. new BarcodeScanner() { BarcodeTypes = [...] } + .Scan(path)BarcodeReader.Read(path) に置き換え
  13. BarcodeResults 上の string[] インデックス化から result.Value および result.Format への結果処理を更新
  14. OnBarcodeのPDF制限を回避するために使用されていたPDFから画像へのレンダリングコードをすべて削除します。
  15. PDF の複数ステップレンダリング + スキャンループを単一の BarcodeReader.Read("file.pdf") 呼び出しに置き換え

移行後のテスト

プロジェクトで使用されている各バーコードタイプ(Code 128、QR、EAN、Data Matrix、PDF417)がスキャン可能な出力を生成することを確認する。 生成されたバーコードを物理的なスキャナーまたはモバイルデバイスでスキャンして、読み取り可能であることを確認してください。

  • バーコード読み取りが既知のテスト画像に対して正しい値を返すことを確認する
  • PDF読み取りで複数ページのテスト文書に対して正しい値とページ番号が返されることを確認します。
  • アプリケーションを任意の CI 環境で実行し、パイプライン内でライセンス キーの設定が正しく機能することを確認します。
  • 移行が完了した後に .csproj、または設定ファイルに OnBarcode 文字列が残っていないことを確認

IronBarcodeへの移行の主なメリット

パッケージとライセンスの統合:移行後は、1つのNuGetパッケージと1つのライセンスキーですべてのバーコード操作をカバーできます。 別途調達する必要のある製品はなく、追跡すべき独立したバージョンスケジュールもなく、起動時に維持すべきデュアルライセンス構成もありません。2つの製品構成に伴う複雑さは、単一の依存関係に置き換えられます。

透明性の高い調達プロセス: IronBarcodeは、製品ウェブサイト上で永久ライセンスの各ティアと価格を公開しています。企業は、営業担当者とのやり取りなしに、総コストを把握し、発注書を提出して調達を完了できます。 IronBarcodeのライセンスページには、すべてのプランの価格と、Dockerおよびクラウド環境における主要な構成に関する詳細情報が掲載されています。

ネイティブPDFサポート:これまでバーコードが埋め込まれたPDFを処理するために別途PDFレンダリングライブラリが必要だったプロジェクトは、その依存関係を完全に排除できます。 単一の BarcodeReader.Read 呼び出しが PDF 文書のすべてのページをレンダリングステップなしで処理し、各結果には抽出元ページ番号が含まれます。

豊かな読取り結果: BarcodeResults 戻り値型はデコードされた値、検出されたバーコードのフォーマット、ソース画像内のバウンディングボックス座標、および PDF 読取りのページ番号を提供します。 以前、フラットな string[] を使用していたアプリケーションは、フォーマット情報を表示し、注釈ワークフローをサポートし、または自信に基づいたフィルタリングを追加処理なしで実装することができます。

APIサーフェスの縮小:静的ファクトリーパターンがプロパティ割り当てモデルに取って代わります。 一般的な生成操作ではコード行数が少なくて済み、読み取り操作ではインスタンスの作成やフォーマットの事前設定は不要です。 バッチ処理においては、品目ごとのコードサイズが小さくなるため、レビューやメンテナンスが容易になるというメリットがあります。

ご注意Aspose、OnBarcode、およびPDFiumはそれぞれの所有者の登録商標です。 このサイトは、Aspose Pty Ltd、Chromium Project、Google、またはOnBarcodeと提携、承認、サポートされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

よくある質問

なぜOnBarcodeからIronBarcodeに移行する必要があるのですか?

一般的な理由としては、ライセンスの簡素化(SDK + ランタイムキーの複雑さの排除)、スループット制限の排除、ネイティブPDFサポートの獲得、Docker/CI/CDデプロイの改善、プロダクションコード内のAPI定型文の削減などが挙げられます。

OnBarcode APIコールをIronBarcodeに置き換えるには?

インスタンスの作成とライセンスの定型文をIronBarCode.License.LicenseKey = "key "に置き換えてください。リーダー・コールをBarcodeReader.Read(path)に、ライター・コールをBarcodeWriter.CreateBarcode(data, encoding)に置き換えてください。静的メソッドはインスタンス管理を必要としません。

OnBarcodeからIronBarcodeに移行する際、コードはどのくらい変更されますか?

ほとんどのマイグレーションでは、コード行数は少なくなります。ライセンスの定型文、インスタンス・コンストラクタ、明示的なフォーマット設定が削除されます。コアとなる読み取り/書き込み操作は、より短いIronBarcodeに対応し、よりきれいな結果オブジェクトが得られます。

移行中にOnBarcodeとIronBarcodeの両方をインストールしておく必要がありますか?

ほとんどのマイグレーションは、並列操作ではなく、直接置き換えです。一度に1つのサービスクラスを移行し、NuGet参照を置き換え、インスタンス化とAPI呼び出しパターンを更新してから次のクラスに移行します。

IronBarcodeのNuGetパッケージ名は何ですか?

パッケージは'IronBarcode'(大文字のBとC)です。Install-Package IronBarcode'または'dotnet add package IronBarcode'でインストールしてください。コード中のusingディレクティブは'using IronBarcode;'である。

IronBarcodeはOnBarcodeと比較して、どのようにDockerデプロイを簡素化しますか?

IronBarcodeは外部SDKファイルやマウントされたライセンス設定のないNuGetパッケージです。Dockerでは、IRONBARCODE_LICENSE_KEY環境変数を設定すると、パッケージが起動時にライセンス検証を処理します。

IronBarcodeはOnBarcodeから移行した後、すべてのバーコードフォーマットを自動的に検出しますか?

IronBarcodeは、サポートされているすべてのフォーマットのシンボルを自動検出します。明示的なBarcodeTypesの列挙は必要ありません。フォーマットが既に知られていて、パフォーマンスが重要な場合、BarcodeReaderOptionsは最適化として検索空間を制限することができます。

IronBarcodeは別のライブラリなしでPDFからバーコードを読み取ることができますか?

BarcodeReader.Read("document.pdf")は、PDFファイルをネイティブに処理します。結果には、見つかった各バーコードの PageNumber、Format、Value、および Confidence が含まれます。外部のPDFレンダリングステップは必要ありません。

IronBarcodeはどのようにパラレルバーコード処理を行うのですか?

IronBarcodeの静的メソッドはステートレスでスレッドセーフです。Parallel.ForEachをスレッドごとのインスタンス管理なしにファイルリスト上で直接使用します。BarcodeReaderOptions.MaxParallelThreadsは内部のスレッドバジェットを制御します。

OnBarcodeからIronBarcodeに移行した場合、どのような結果プロパティが変更されますか?

一般的なリネーム:BarcodeValueはValueに、BarcodeTypeはFormatに。IronBarcodeの結果にはConfidenceとPageNumberも追加されます。ソリューション全体の検索と置換は、既存の結果処理コードで名前の変更を処理します。

CI/CDパイプラインでIronBarcodeのライセンスを設定するには?

IRONBARCODE_LICENSE_KEYをパイプラインシークレットとして保存し、アプリケーションの起動コードにIronBarCode.License.LicenseKeyを割り当てます。1つのシークレットで、開発環境、テスト環境、ステージング環境、本番環境を含むすべての環境をカバーできます。

IronBarcodeはカスタムスタイルのQRコード生成に対応していますか?

はい。QRCodeWriter.CreateQrCode()は、ChangeBarCodeColor()によるカスタムカラー、AddBrandLogo()によるロゴ埋め込み、設定可能なエラー訂正レベル、PNG、JPG、PDF、ストリームなどの複数の出力形式をサポートしています。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね