IRONSOFTWAREHOME
ビデオ

NetBarcodeからIronBarcodeへの移行

Curtis Chau
Curtis Chau
Updated: 2026年8月1日

このガイドでは、NetBarcodeからIronBarcodeへの移行手順全体について説明します。パッケージの削除手順、名前空間の更新、API変換の例、および移行開始前にすべての呼び出し箇所を特定するためのチェックリストが含まれています。 このガイドは、1Dバーコード生成のためにNetBarcodeでプロジェクトを開始し、その後、2Dフォーマット、読み取り機能、またはSixLabors.ImageSharpライセンスの義務の明確化を必要とする一般的なシナリオに対処しています。これらはすべてNetBarcodeの範囲外です。

NetBarcodeから移行する理由

形式の上限: NetBarcodeのType列挙型では、すべて線形の11のバーコード形式が定義されています。 QRコード、DataMatrix、PDF417、Aztecに関するエントリはありません。 プロジェクトでQRコードの要件が追加された場合(非接触型配送リンク、モバイルディープリンク、または医薬品データマトリックスの義務付けなど)、NetBarcodeはその要件を満たすことができません。 ライブラリの設計上、唯一の解決策は、そのフォーマットでの使用を中止し、別のパッケージを導入することである。 11エントリの列挙型の範囲外にある追加のフォーマット要件は、依存ツリーに別のライブラリを追加します。

読み取りAPIなし: NetBarcodeはバーコード画像を生成しますが、それをデコードするメソッドは提供していません。 返品ラベルのスキャン、仕入先請求書からのバーコード値の抽出、印刷されたバーコードがソースデータと一致するかどうかの検証が必要なプロジェクトでは、別途読み取りライブラリを追加する必要があります。 ZXing .NETは最も一般的な選択肢であり、NetBarcodeと、通常はQRコード専用ライブラリを既に備えているコードベースに、3つ目のAPIインターフェースを追加するものです。

**ImageSharp商用ライセンス:**NetBarcodeはSixLabors.ImageSharpに依存しており、商用ライセンスが分かれています。 無料プランは、オープンソースプロジェクトおよび一定の年間収益基準を下回る企業に適用されます。 その閾値を超えると商用ライセンスが必要です。 この条件は推移的な依存関係チェーンに組み込まれており、 NuGetのインストール時には表示されません。 小売業や物流業など、バーコードを大規模に処理する企業(まさにNetBarcodeが対象とするユースケース)は、義務を評価することなく、基準値を超えて運用している可能性がある。

複数のライブラリの蓄積: QRコードが必要なときにQRCoderを使用し、読み取りが必要になったときにZXing .NETを使用するプロジェクトでは、バーコード関連の依存関係が3つ蓄積されます。 それぞれに独自のリリーススケジュール、独自のImageSharpバージョン要件、そして維持管理すべき独自のAPIがあります。 生成、読み取り、1次元、2次元を網羅する単一のライブラリに統合することで、ライブラリ間のバージョン管理の問題が解消されます。

基本的な問題

NetBarcodeのみで始まったプロジェクトが、その後2Dフォーマットを必要とするようになった場合、最終的には次のような分割インポートが発生します。

// ネットバーコード for 1D — one library, one API
using NetBarcode;
var code128 = new Barcode("12345", Type.Code128);
code128.SaveImageFile("label.png");

// QRCoder added separately for QR — second library, second API
using QRCoder;
var qrGenerator = new QRCodeGenerator();
var qrData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M);
var png = new PngByteQRCode(qrData).GetGraphic(20);
File.WriteAllBytes("qr.png", png);
C#

IronBarcodeに移行後、単一のインポートから同じ2つの出力が得られます。

using IronBarCode;

BarcodeWriter.CreateBarcode("12345", BarcodeEncoding.Code128)
    .SaveAsPng("label.png");

BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

IronBarcodeとNetBarcode:機能比較

フィーチャーネットバーコードIronBarcode
1次元バーコード生成はいはい
2次元バーコード生成(QR、DataMatrix、PDF417、Aztec)なしはい
画像からのバーコード読み取りなしはい
PDF文書からのバーコード読み取りなしはい
1Dフォーマットのカウント1130+
2Dフォーマットのカウント08歳以上
総シンボル体系1150歳以上
GS1-128、GS1データバーなしはい
郵便形式なしはい
SVG出力なしはい
バッチ処理マニュアル内蔵
ImageSharpの依存関係はい(分割ライセンス)なし
商用サポートコミュニティプロフェッショナル
ライセンスモデルMITライセンス(ImageSharp使用条件あり)商用

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

ステップ 1: NuGet パッケージを置き換える

NetBarcodeとその推移的な依存関係であるImageSharpを削除します。

dotnet remove package NetBarcode
dotnet remove package SixLabors.ImageSharp
SHELL

プロジェクト内の他のパッケージがそれを間接的に参照している場合、復元されたパッケージリストにSixLabors.ImageSharpが再出現する可能性がありますのでご注意ください。 削除後、ImageSharpが残っているかどうか、またその商用ライセンス条件がプロジェクトに適用されるかどうかを確認するには、dotnet list package --include-transitiveを実行してください。

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

dotnet add package IronBarcode
SHELL

NuGetパッケージ名はIronBarcodeです; コード内で使用される名前空間はIronBarCode(大文字のCに注意)です。

ステップ3:名前空間を更新し、ライセンスを初期化する

NetBarcode呼び出しを含むすべてのファイル内の古いusingディレクティブを置き換えてください。

// 取り除く these:
// using NetBarcode;
// using SixLabors.ImageSharp;
// using SixLabors.ImageSharp.PixelFormats;
// using SixLabors.Fonts;

// Add this:
using IronBarCode;
C#

アプリケーションの起動時にライセンスの初期化を追加してください。 — Startup.cs、またはプロジェクトのエントリーポイントに:

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

評価用の無料トライアルキーが利用可能です。 ライセンスを購入すると、生成されたバーコード画像から試用版の透かしが削除されます。

コード移行の例

コード128生成

NetBarcodeで最も一般的な使用パターンは、コンストラクタを静的メソッドに変更し、メソッド名を変更するだけで、 IronBarcodeに直接適用できます。

NetBarcodeのアプローチ:

using NetBarcode;

var barcode = new Barcode("12345678901234", Type.Code128);
barcode.SaveImageFile("shipping-label.png");

IronBarcodeのアプローチ:

using IronBarCode;

BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

BarcodeWriter.CreateBarcode(data, BarcodeEncoding.X)になります。 SaveAsWindowsBitmap()になります。 利用可能な1次元バーコード生成オプションはすべて、 IronBarcodeの操作ガイドに記載されています。

EAN-13

小売製品のバーコードタイプは、定数名の変更とメソッド名の変更によって、ライブラリ間で直接マッピングされます。

NetBarcodeのアプローチ:

using NetBarcode;

var ean13 = new Barcode("5901234123457", Type.EAN13);
ean13.SaveImageFile("product-ean.png");

IronBarcodeのアプローチ:

using IronBarCode;

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product-ean.png");

エンコーディング定数の名前は、直接的な同等物が存在する場合、NetBarcodeのType列挙メンバーの名前に一致します。注記: UPC-A(Type列挙には含まれていません。それらの形式が必要な場合、IronBarcodeはそれらを標準的にサポートしています。via BarcodeEncoding.MSI

GetImage() から ToPngBinaryData() へ

NetBarcodeのSixLabors.ImageSharp.Image<Rgba32>を返します。これには明示的なImageSharpインポートが呼び出しコード内で必要であり、下流のロジックをImageSharp APIに結びつけます。 IronBarcodeはバイナリおよびストリーム出力メソッドをGeneratedBarcodeオブジェクト上で直接公開し、呼び出しコードからのImageSharp依存を完全に削除します。

NetBarcodeのアプローチ:

using NetBarcode;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

var barcode = new Barcode("12345", Type.Code128);
Image<Rgba32> image = barcode.GetImage();

using var stream = new MemoryStream();
image.SaveAsPng(stream);
byte[] bytes = stream.ToArray();

IronBarcodeのアプローチ:

using IronBarCode;

var barcode = BarcodeWriter.CreateBarcode("12345", BarcodeEncoding.Code128);

// Retrieve bytes directly — no ImageSharp type in calling code
byte[] bytes = barcode.ToPngBinaryData();

// Or write to a stream directly
using var stream = new MemoryStream();
barcode.SaveAsPng(stream);

Image<Rgba32>の結果に対してさらなるImageSharp操作を行っていたコード — サイズ変更、合成、形式変換 — については、それらの操作を個別に評価する必要があります。IronBarcodeはImageSharpオブジェクトを公開しません。

NetBarcodeとQRCoderをまとめて置き換える

NetBarcodeとQRCoderを併用するプロジェクトでは、両方を同時に置き換えることができます。 IronBarcodeの2D生成は、1D生成と同じBarcodeWriter.CreateBarcodeメソッドを使用します。 異なるのはBarcodeEncoding定数のみです。 エンコードオプションと設定については、 2Dバーコード生成ガイドを参照してください。

NetBarcodeとQRCoderのアプローチ:

using NetBarcode;
using QRCoder;

// 1D with NetBarcode
var code128 = new Barcode("12345", Type.Code128);
code128.SaveImageFile("label.png");

// QR with QRCoder
var qrGenerator = new QRCodeGenerator();
var qrData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M);
var qrCode = new PngByteQRCode(qrData);
File.WriteAllBytes("qr.png", qrCode.GetGraphic(20));

IronBarcodeのアプローチ:

using IronBarCode;

// 1D — same API as 2D
BarcodeWriter.CreateBarcode("12345", BarcodeEncoding.Code128)
    .SaveAsPng("label.png");

// QR — change the encoding constant, nothing else
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Additional 2D formats available with no further imports
BarcodeWriter.CreateBarcode("01034531200000111719112510ABCD1234", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-label.png");

読書機能の追加

プロジェクトで読み取りにZXing .NETも使用していた場合、NetBarcodeとともにその依存関係を削除できます。 IronBarcodeのBarcodeReaderは、自動形式検出によって画像とPDF文書を処理します。

ZXing .NETアプローチ:

using ZXing;
using ZXing.Common;
using ZXing.Rendering;

var reader = new BarcodeReaderGeneric();
reader.Options = new DecodingOptions { TryHarder = true };

// Bitmap loading and format-specific handling required before decode call

IronBarcodeのアプローチ:

using IronBarCode;

// Read from an image file — automatic format detection
var imageResults = BarcodeReader.Read("shipping-label.png");
foreach (var r in imageResults)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read from a PDF document — no separate PDF library needed
var pdfResults = BarcodeReader.Read("supplier-invoice.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Format}: {r.Value}");
}

読み取りオプションに関する詳細なドキュメントは、"画像からのバーコード読み取りガイド"に記載されており、速度調整、複数バーコードの検出、画像補正設定などについて解説しています。

ネットバーコード APIからIronBarcodeへのマッピングリファレンス

ネットバーコードIronBarcodeノート
new Barcode(data, Type.Code128)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)コンストラクタ → 静的メソッド
new Barcode(data, Type.EAN13)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN13)直接マッピング
new Barcode(data, Type.Code39)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code39)直接マッピング
new Barcode(data, Type.EAN8)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN8)直接マッピング
new Barcode(data, Type.Codabar)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Codabar)直接マッピング
new Barcode(data, Type.Code93)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code93)直接マッピング
barcode.SaveImageFile("x.png").SaveAsPng("x.png")メソッド名の変更
barcode.SaveImageFile("x.jpg").SaveAsJpeg("x.jpg")メソッド名の変更
barcode.GetImage()Image<Rgba32>.ToPngBinaryData() または .SaveAsPng()ImageSharpタイプは公開されていません
なし Type.QRCodeBarcodeEncoding.QRCode新機能
なし Type.DataMatrixBarcodeEncoding.DataMatrix新機能
なし Type.PDF417BarcodeEncoding.PDF417新機能
なし Type.AztecBarcodeEncoding.Aztec新機能
読み取りAPIはありませんBarcodeReader.Read(path)新機能
using NetBarcode;using IronBarCode;名前空間の置換
using SixLabors.ImageSharp;取り除くもう必要ありません
using SixLabors.ImageSharp.PixelFormats;取り除くもう必要ありません
using SixLabors.Fonts;取り除くもう必要ありません

エンコード定数の完全なリストは、サポートされているバーコード形式のリファレンスに記載されています。

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

問題1:パッケージ削除後もImageSharpの推移的依存関係が残る

問題: dotnet remove package NetBarcode を実行した後、依存関係ツリーにSixLabors.ImageSharpがまだ存在すると表示されるのは、プロジェクト内の他のパッケージもそれを参照しているためです。

解決策: どのパッケージがまだImageSharpを引き込んでいるかを特定するために、dotnet list package --include-transitiveを実行してください。それがNetBarcodeのみである場合、明示的なパッケージ参照を削除し、復元するとクリアされるはずです。 別のパッケージが原因である場合、NetBarcodeの削除にかかわらず、そのパッケージのImageSharp依存関係および商用ライセンス条件は範囲内に残ります。

dotnet list package --include-transitive | grep -i imagesharp
SHELL

第2号:画像<Rgba32>削除後に型を解決できません

問題: SixLabors.ImageSharpパッケージを削除した後、SixLabors.ImageSharp.Image<Rgba32>として型指定されたパラメータが、型が使用できなくなったためにコンパイルエラーを引き起こします。

**解決策:**各使用箇所を適切なIronBarcode出力方法に置き換えてください。 その変数がバイトを取得するために使用されていた場合、.ToPngBinaryData()に置き換えてください。 ストリームに書き込まれていた場合、.SaveAsPng(stream)に置き換えてください。 ファイルに保存されていた場合、.SaveAsPng(path)に置き換えてください。

// Before — requires SixLabors.ImageSharp reference
Image<Rgba32> img = barcode.GetImage();
img.SaveAsPng(stream);

// After — no external image type required
barcode.SaveAsPng(stream);

問題3:v1.8 互換性のない変更点

問題: v1.8以前のNetBarcodeに対して書かれたコードベースには、明示的な型指定をせずに結果を格納したGetImage()呼び出しがある可能性があります。これは、v1.8以前の内部戻り型に依存しています。 これらの呼び出しは、 IronBarcodeへの移行とは無関係に、NetBarcodeのアップデート後に既に機能しなくなっている可能性があります。

解決策: IronBarcodeへの移行を、v1.8以前の問題を同時に解決する機会として活用してください。すべてのGetImage()呼び出しサイトは、プロジェクト全体の検索で特定され、移行パス中に適切なIronBarcode出力メソッドに置き換えるべきです。 以下の移行チェックリストにあるgrepコマンドは、これらの場所を特定します。

NetBarcode移行チェックリスト

移行前

変更を加える前に、NetBarcodeの使用状況をすべて監査してください。

grep -r "using NetBarcode" ./src
grep -r "new Barcode(" ./src
grep -r "Type\.Code128\|Type\.EAN13\|Type\.Code39\|Type\.EAN8" ./src
grep -r "Type\.Codabar\|Type\.Code93" ./src
grep -r "SaveImageFile(" ./src
grep -r "GetImage(" ./src
grep -r "using SixLabors\.ImageSharp" ./src
grep -r "Image<Rgba32>" ./src
SHELL
  • using ディレクティブの変更が必要なすべてのファイルを特定します
  • すべてのImage<Rgba32>オブジェクトが下流でどのように使用されるかをメモしてください。
  • QRCoderまたはZXing .NETが存在するかどうかを確認し、同じ処理で削除できるかどうかを確認します。
  • 削除前に現在のImageSharp依存関係の状態を文書化するためにdotnet list package --include-transitiveを実行してください。 IronBarcodeのライセンスキーを入手してください(購入せずに無料トライアルキーを入手できます)。

コードの更新

  1. dotnet remove package NetBarcodeを実行してください。
  2. 他のパッケージによって使用されていない場合は、dotnet remove package SixLabors.ImageSharpを実行してください。
  3. dotnet add package IronBarcodeを実行してください。
  4. アプリケーションの起動時にIronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";を追加してください。
  5. 影響を受けたファイルごとにusing IronBarCode;に置き換えてください。
  6. すべてのファイルからusing SixLabors.Fonts;を削除してください。
  7. APIマッピングテーブルを使用して、各BarcodeWriter.CreateBarcode(data, BarcodeEncoding.X)に変換してください。
  8. SaveAsPng()や適切な形式特有のメソッドに置き換えてください。
  9. SaveAsPng(stream)に適宜置き換えてください。
  10. QRCoderを削除する場合は、QRCodeGenerator + BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)に置き換えてください。
  11. ZXing.Netを削除する場合は、リーダーセットアップをBarcodeReader.Read(path)に置き換えてください。

移行後のテスト

プロジェクトをビルドし、コンパイルエラーがないことを確認します。

  • 生成されたバーコード出力に対して既存の単体テストを実行する バーコード画像が正しいシンボルと判読可能な内容であることを目視で確認する
  • 移行中にQRコード形式が追加された場合は、その出力を確認してください。
  • バーコードスキャン機能が追加された場合は、読み取り機能をテストする
  • もしImageSharpが削除された場合、それがもう存在しないことを確認するためにdotnet list package --include-transitiveを実行してください。
  • ライセンスキーの初期化が最初のバーコード操作の前に実行されることを検証する

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

統一された形式カバレッジ: 移行後、QRコード、DataMatrix、PDF417、Aztec、そして他のすべての2D形式は、Code128およびEAN-13で使用される同じAPI呼び出しを通じて利用可能です。形式要件が拡大しても二次的なライブラリは不要であり、BarcodeEncoding定数が形式の種類によって変更される唯一のものです。

内蔵リーディング: BarcodeReader.Read()は、自動形式検出を使用して画像ファイルとPDF文書を処理します。 これまで読み取りにZXing .NETを必要としていたプロジェクトは、その依存関係を解消し、単一のバーコードライブラリに統合することで、プロジェクト開発者が習得しなければならないAPIの範囲を縮小できます。

ImageSharpへの依存なし: IronBarcodeはSixLabors.ImageSharpに依存していません。 移行後、NetBarcodeの間接依存関係に埋め込まれている分割商用ライセンス条件はプロジェクトにもう適用されません。 ライセンスコンプライアンスのレビューが簡単になります。バーコードライブラリの義務が直接示され、サードパーティの画像処理ライブラリの収益閾値に依存しないためです。

安定した公開API: IronBarcodeは、公開APIにおいてサードパーティの型を公開していません。 GetImage()型変更が引き起こしたような呼び出しコードにおける破壊的変更を将来のIronBarcode内部レンダリングの更新がもたらさないことを意味します。

維持管理が必要な依存関係が1つに: NetBarcode、QRCoder、ZXing .NETをIronBarcodeに置き換えることで、3つのアップグレードサイクル、3つのリリースノート、および3つの潜在的なバージョン競合を1つに削減できます。 .NETのバージョンが進み、依存関係の更新が必要になると、メンテナンス作業は3つのライブラリではなく、1つのライブラリで済むようになります。

ご注意: NetBarcode、QRCoder、ZXing.NETはそれぞれの所有者の登録商標です。 このサイトは、NetBarcode、QRCoder、またはZXing.NETと提携、承認、サポートされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。