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
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"
アプリケーション内のすべてのバーコード操作(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
プロジェクトが古い 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>
lib/ ディレクトリから DLL ファイルを削除するか、それらが保存されている場所から削除します。 新しいNuGetパッケージと並行して古いアセンブリを残しておくと、コンパイル時に名前空間の競合が発生します。
ステップ2: IronBarcodeを追加する
1つのパッケージで、生成、読み込み、PDFサポートがすべてカバーされます。
dotnet add package IronBarcode
dotnet add package IronBarcode
閲覧には別のパッケージは必要ありません。 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
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"
コード移行の例
コード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")
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")
データとエンコーディングタイプは CreateBarcode への引数として渡されます。 解像度やバーの高さといった特性は、スキャン可能な出力を生成するために必須ではありません。 デフォルト設定はほとんどの用途に適しています。 カスタム寸法が必要な場合、CreateBarcode と SaveAsPng 間のチェーン呼び出しとして追加でき、可変オブジェクト状態を導入しません。
ロゴ付き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")
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")
エラー訂正レベル、ロゴサイズ計算、画像合成は内部で処理されます。 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
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
インスタンスの作成、フォーマット配列、個別のライセンス設定は不要です。 フォーマットは自動的に検出されます。 各結果には、デコードされた値と検出されたフォーマットが含まれています。 読み取りオプションやサポートされている画像タイプの詳細については、 "画像からバーコードを読み取る方法"ガイドを参照してください。
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
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
レンダリング手順なし、外部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
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
オンバーコード 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" .
問題2:段階的移行中の型名の競合
OnBarcode: リーダーネームスペースは BarcodeScanner という名前のクラスをエクスポートします。 IronBarcode には BarcodeReader という静的なクラスがあります。 これらの名前は直接競合しませんが、OnBarcode.Barcode.Reader と IronBarCode を同時にインポートするファイルは 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")
問題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")
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" .
どのファイルが生成のみを使用し、どのファイルが読み取りのみを使用し、どのファイルが両方を使用するかを文書化する。 NuGet パッケージ参照の代わりに手動 <Reference> DLL ブロックを含むファイルに注意してください。
コード更新タスク
OnBarcode.Barcode.GeneratorNuGet パッケージを削除OnBarcode.Barcode.ReaderNuGet パッケージを削除.csprojファイルから手動<Reference>DLL エントリをすべて削除- リポジトリからOnBarcode DLLファイルを削除します。
dotnet add package IronBarcodeを実行- 各ファイルで
using OnBarcode.Barcodeをusing IronBarCodeに置き換え - 各ファイルで
using OnBarcode.Barcode.Readerをusing IronBarCodeに置き換え - オンバーコード DLL
<Reference>エントリ(ジェネレーターとリーダー)を両方削除 — 置き換えるランタイムライセンス呼び出しはありません - アプリケーションの起動時に
IronBarCode.License.LicenseKey = "YOUR-KEY"を一度追加 - 各
new Linear()またはnew QRCode()+ プロパティ割り当てブロックをBarcodeWriter.CreateBarcode(data, encoding)に変換 barcode.drawBarcode("file.png")を.SaveAsPng("file.png")(または適切なフォーマットメソッド) に置き換えnew BarcodeScanner() { BarcodeTypes = [...] }+.Scan(path)をBarcodeReader.Read(path)に置き換えBarcodeResults上のstring[]インデックス化からresult.Valueおよびresult.Formatへの結果処理を更新- OnBarcodeのPDF制限を回避するために使用されていたPDFから画像へのレンダリングコードをすべて削除します。
- 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サーフェスの縮小:静的ファクトリーパターンがプロパティ割り当てモデルに取って代わります。 一般的な生成操作ではコード行数が少なくて済み、読み取り操作ではインスタンスの作成やフォーマットの事前設定は不要です。 バッチ処理においては、品目ごとのコードサイズが小さくなるため、レビューやメンテナンスが容易になるというメリットがあります。
よくある質問
なぜ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、ストリームなどの複数の出力形式をサポートしています。

