IRONSOFTWAREHOME
ビデオ

Neodynamic Barcode から IronBarcode への移行

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

このガイドは、Neodynamic.SDK.BarcodeReaderからIronBarcodeへの完全な移行パスを提供します。 これには、Neodynamicパッケージの削除、デュアルライセンス構成のシングルキーへの置き換え、生成および読み取りAPI呼び出しの翻訳、そしてNeodynamic製品セットでは不可能だった2Dバーコード読み取り機能の取得プロセスが含まれます。 このガイドは、既存のNeodynamicコードを所有しており、移行を完了するために体系的なファイルごとのアプローチを必要とする開発者向けに書かれています。

Neodynamic Barcodeから移行する理由

2D読み取りギャップ: ネオダイナミック バーコードProfessional SDKは、QRコード、DataMatrix、PDF417、およびAztecバーコードを生成します。 これらのフォーマットはいずれも、付属のバーコードリーダーSDKでは読み取ることができません。 製品ラベル、輸送コンテナ、または文書追跡用のQRコードを生成するプロジェクトは、生成器と同時に購入したリーダーで、生成した同じコードを読み取ることはできません。 IronBarcodeは、同じライブラリとライセンスを使用して、QRコード、DataMatrix、PDF417、Aztec、およびその他サポートされているすべての2Dフォーマットの読み取りと生成を行います。

二重製品のオーバーヘッド: ネオダイナミックSDKを使用するプロジェクトごとに、2つのusingディレクティブ、2つのライセンスブロック、2つの別々の更新サイクルがあります。 このオーバーヘッドは、すべての開発者マシン、すべてのCIパイプライン、すべての本番環境で繰り返されます。 メンテナンス要件が異なる2つのパッケージを、単一のライセンスを持つ単一の依存関係に統合することが、この移行の機械的な結果である。

サードライブラリの問題: 2D読み取りのギャップに直面し、移行ではなく回避策を選択したチームは、通常、QRコードの読み取りを具体的にカバーするために、サードライブラリ(最も一般的な選択肢はZXing .NET)を追加しました。 この決定は、一つの制約と引き換えに、別の複雑さを生み出す。それは、バーコード関連の依存関係が3つ増えることであり、それぞれに独自のバージョン制約、リリースノート、そして.NETランタイムや依存フレームワークが更新された際に発生する可能性のある競合の可能性が存在する。 IronBarcodeはこれら3つすべてを置き換えます。

価格の複雑性: ネオダイナミック バーコードProfessional SDKは開発者ごとに価格が設定されています(Basicは約$352、Ultimateは約$705、ComponentSource経由)。 Barcode Reader SDKは別途コストがかかります。生成と1D読み取りの両方が必要なプロジェクトは両方を購入しなければならず、Reader料金の上にチームサイズに応じたコストが追加されます。 2D読み取りが必要なプロジェクトは、Neodynamic製品ファミリー内でその要件を満たすことができません。 IronBarcode Liteは、1Dおよび2Dの生成と読み取りを単一のライセンスでカバーします。 現在の価格はIronBarcodeライセンスページにあります。

基本的な問題

Neodynamic SDKを両方使用して完全なバーコードワークフローを実現したコードベースにおける根本的な問題は、QRコードの読み取りがそもそも不可能だったことである。

// Before: ネオダイナミックバーコードリーダー does not support QR codes
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);

    // Results are always null or empty for 2D barcodes
    if (results == null || !results.Any())
    {
        throw new NotSupportedException(
            "Neodynamic Barcode Reader does not support QR codes");
    }

    return results.First().Value;
}
C#

IronBarcodeへの移行後、同じ操作はフォーマット固有の処理のない標準的な読み取り呼び出しになります。

// After: IronBarcode reads QR codes with the same call used for all formats
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}

2Dバーコード読み取りを参照するコードベースのすべてのthrow new NotSupportedException(...)プレースホルダは、この移行中に削除され、動作する読み取り呼び出しに置き換えられます。

IronBarcodeとNeodynamic Barcode:機能比較

フィーチャーネオダイナミック バーコードProfessionalネオダイナミックバーコードリーダーIronBarcode
コード128、EAN-13、UPC-A世代はい該当なしはい
QRコード、データマトリックス、PDF417生成はい該当なしはい
1次元バーコード読み取り該当なしはいはい
QRコードの読み取り該当なしいいえはい
データマトリックスの読み取り該当なしいいえはい
PDF417の閲覧該当なしいいえはい
ネイティブPDFバーコード読み取りなしなしはい
自動フォーマット検出該当なしなしはい
必要なNuGetパッケージ111(両方をカバー)
ライセンスキーが必要です11(別添)1(すべてを網羅)
System.Drawing の依存関係はいはいなし
Linux / Docker のサポート制限的制限的はい
.NET 8 / .NET 9 のサポートはい制限的はい
非同期バッチ読み取りなしなしはい

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

ステップ1:両方のNeodynamicパッケージを削除する

両方の荷物を取り除かなければなりません。 削除順序に影響を与える共通の依存関係はありません。

dotnet remove package Neodynamic.SDK.Barcode
dotnet remove package Neodynamic.SDK.BarcodeReader
SHELL

続行する前に、.csprojファイルから両方のエントリが削除されていることを確認してください。

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

dotnet add package IronBarcode
SHELL

ステップ3:デュアルライセンス構成の置き換え

両方のNeodynamicライセンスブロックを削除し、代わりに単一のIronBarcodeキー割り当てに置き換えてください。 この割り当ては、アプリケーションのスタートアップ時に一度行われます—Startup.cs、またはアプリケーションのコンポジションルートで:

// Before: two license blocks, two products
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;

BarcodeProfessional.LicenseOwner = "Your Company";
BarcodeProfessional.LicenseKey = "GEN-LICENSE-KEY";

Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Your Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-LICENSE-KEY";
// After: one key covers generation and reading across all formats
using IronBarCode;

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

Neodynamicのライセンスキーを保持している設定ファイル、環境変数、またはシークレットストアは、移行が検証された後に廃止できます。

コード移行の例

Code 128バーコードの生成

新力学的アプローチ:

using Neodynamic.SDK.Barcode;
using System.Drawing.Imaging;

public void GenerateCode128(string data, string outputPath)
{
    var barcode = new BarcodeProfessional();
    barcode.Code = data;
    barcode.Symbology = Symbology.Code128;
    barcode.BarcodeUnit = BarcodeUnit.Pixel;

    System.Drawing.Image image = barcode.GetBarcodeImage();
    image.Save(outputPath, ImageFormat.Png);
}

IronBarcodeのアプローチ:

using IronBarCode;

public void GenerateCode128(string data, string outputPath)
{
    BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .SaveAsPng(outputPath);
}

System.Drawing.Imagingインポートはもう必要ありません。 BarcodeInfoインスタンスとそのプロパティの割り当ては、単一のメソッド呼び出しに統合されます。 サイズ設定、注釈、出力フォーマットのオプションについては、 "1Dバーコードの作成ガイド"を参照してください。

QRコードの生成

新力学的アプローチ:

using Neodynamic.SDK.Barcode;

public void GenerateQrCode(string data, string outputPath)
{
    var barcode = new BarcodeProfessional();
    barcode.Code = data;
    barcode.Symbology = Symbology.QRCode;
    barcode.QRCodeECL = QRCodeErrorCorrectionLevel.H;

    barcode.GetBarcodeImage().Save(outputPath, System.Drawing.Imaging.ImageFormat.Png);
}

IronBarcodeのアプローチ:

using IronBarCode;

public void GenerateQrCode(string data, string outputPath)
{
    QRCodeWriter.CreateQrCode(data, 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
        .SaveAsPng(outputPath);
}

世代変換はAPIの表面のみを変更します。 今回の移行によってもたらされる決定的な違いは、同じアプリケーションが、同じIronBarcodeライブラリとライセンスを通じて、自身が生成したQRコードを読み取ることができるようになった点です。 2Dバーコードの作成に関する詳細な説明については、 "2Dバーコードの作成ガイド"を参照してください。

1次元バーコードの読み取り

新力学的アプローチ:

using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string[] Read1DBarcodes(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);
    return results?.Select(r => r.Value).ToArray() ?? Array.Empty<string>();
}

IronBarcodeのアプローチ:

using IronBarCode;

public string[] Read1DBarcodes(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.Select(r => r.Value).ToArray();
}

System.Drawingインポートは削除されます。 IronBarcodeはファイルパスを直接受け付けます。 両方のAPIでresult.Valueプロパティ名が同じであるため、返された値を処理する下流のコードは変更されません。 複数のバーコード画像の読み取りと前処理オプションについては、 "画像からのバーコード読み取りガイド"を参照してください。

QRコードの読み取り(これまで不可能だったこと)

新力学的アプローチ:

// This method could not be implemented with Neodynamic Barcode Reader
public string ReadQrCode(string imagePath)
{
    throw new NotSupportedException(
        "Neodynamic Barcode Reader does not support QR codes");
}

IronBarcodeのアプローチ:

using IronBarCode;

public string ReadQrCode(string imagePath)
{
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}

2Dバーコード読み取りを参照するすべてのthrow new NotSupportedException(...)プレースホルダは、標準的な読み取り呼び出しになります。 メソッド本体は、スローされる例外から、動作する実装へと変更されます。 QRコードには特別な取り扱いは必要ありません。 IronBarcodeはフォーマットを自動的に識別します。

PDF文書からのバーコード読み取り(新機能)

新力学的アプローチ:

// Neodynamic Reader cannot read barcodes from PDF files directly
// An image extraction step using a separate library was required before reading
// なし direct equivalent exists
C#

IronBarcodeのアプローチ:

using IronBarCode;

public void ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);

    foreach (var result in results)
    {
        Console.WriteLine($"Value: {result.Value} | Format: {result.Format} | Page: {result.PageNumber}");
    }
}

IronBarcodeは、PDF文書の全ページからバーコードを直接読み取ります。 結果として、各バーコードが検出されたページ番号が返されます。 この機能には、追加のライブラリや中間的な画像抽出手順は一切必要ありません。

Neodynamic Barcode API からIronBarcodeへのマッピングリファレンス

ネオダイナミックAPIIronBarcode相当品ノート
BarcodeInfo.LicenseOwner = "..."IronBarCode.License.LicenseKey = "key"単一のキーに統合
BarcodeInfo.LicenseKey = "..."(part of single key above)所有者欄は別途ありません
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner(removed)不要
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey(removed)不要
new BarcodeInfo()BarcodeWriter.CreateBarcode(data, encoding)静的、インスタンスなし
barcode.Value = data最初のパラメータCreateBarcode建設段階で合格
barcode.Symbology = Symbology.Code128BarcodeEncoding.Code1282番目のパラメータ
barcode.Symbology = Symbology.QRCodeBarcodeEncoding.QRCode往復全行程に対応
barcode.QRCodeECL = QRCodeErrorCorrectionLevel.HQRCodeWriter.QrErrorCorrectionLevel.Highest異なるクラスのエントリーポイント
barcode.GetImage().Save(path, ImageFormat.Png).SaveAsPng(path)流暢、ImageFormat 列挙なし
BarcodeReader.Read(bitmap)BarcodeReader.Read(imagePath)ファイルパスがビットマップを置き換えます
result.Valueresult.Value同じプロパティ名
Symbology.DataMatrixBarcodeEncoding.DataMatrix世代のみ → 世代と読書
2D読み取り用throw new NotSupportedException(...)BarcodeReader.Read(imagePath)動作する実装に置き換える

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

問題1:2つの荷物の撤去命令

**問題点:**開発者が一方のNeodynamicパッケージのみを削除し、もう一方を残した場合、2つのSDKは型を共有していないにもかかわらず、一部のソースファイルでは両方の名前空間が同じファイル内でインポートされている可能性があるため、コンパイルエラーが発生します。

**解決策:**ソースコードを変更する前に、両方のパッケージを削除してください。 両方を削除した後、すべてのusing Neodynamic.SDK.BarcodeReaderディレクティブを検索し、一緒に削除します:

dotnet remove package Neodynamic.SDK.Barcode
dotnet remove package Neodynamic.SDK.BarcodeReader
SHELL

次に、以下の方法で監査を行います。

grep -r "Neodynamic.SDK" --include="*.cs" .
SHELL

問題2:デュアルライセンス構成のクリーンアップ

**問題:**2つのNeodynamicライセンスブロックが異なる場所に表示されることが多い — 1つはアプリケーション起動クラス、もう1つはサービスイニシャライザ内。 ブロックを1つだけ削除した場合、残りのコードは既に存在しない名前空間を参照するため、コンパイルエラーが発生します。

解決策: Neodynamicライセンスのプロパティ割り当て4つすべてを検索し、 IronBarcodeキーを追加する前にそれらをまとめて削除します。

grep -r "LicenseOwner\|LicenseKey" --include="*.cs" .
SHELL

4行すべてを1つの代入文に置き換えてください。

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

問題3:CatchブロックからのNotSupportedExceptionの削除

問題: ネオダイナミックリーダーを使用した一部のコードベースは、2Dバーコード読み取りのサイレントフェイルに対処するためにcatch (NotSupportedException)ブロックを追加しました。 それらのcatchブロックは、例外をスローするコードとともに削除する必要があります。 そうでない場合、catch節は発生することのないコードパスを参照しています。

解決策: バーコード関連のファイルでNotSupportedExceptionを検索し、各出現を確認します。 2Dフォーマットの読み取り試行に応答して例外が発生した場合は、throwとcatchの両方を削除してください。

grep -r "NotSupportedException" --include="*.cs" .
SHELL

例外を投げるメソッドの本体をBarcodeReader.Read(imagePath)に置き換え、コーラーから対応するキャッチ節を削除します。

Neodynamicバーコード移行チェックリスト

移行前

  • すべてのネオダイナミックパッケージ参照を検索:grep -r "Neodynamic.SDK" --include="*.csproj" .
  • すべてのネオダイナミック使用ディレクティブを検索:grep -r "using Neodynamic" --include="*.cs" .
  • ライセンス構成の場所を検索します: grep -r &quot;LicenseOwner\|LicenseKey&quot; --include=&quot;*.cs&quot; .
  • すべてのgrep -r "new BarcodeInfo\(\)" --include="*.cs" .
  • すべてのネオダイナミック読み取り呼び出しを検索:grep -r "BarcodeReader.Read" --include="*.cs" .
  • バーコードパスでのすべてのgrep -r "NotSupportedException" --include="*.cs" .
  • 2D読み取りギャップを埋めるために特別に追加されたサードパーティライブラリ(ZXing .NETなど)を特定します。これは移行後に削除できます。
  • すべての Neodynamic ライセンス キーを記録し、検証後にシークレット ストアから削除できるようにします。

コード更新タスク

  1. dotnet remove package Neodynamic.SDK.Barcodeを実行
  2. dotnet remove package Neodynamic.SDK.BarcodeReaderを実行
  3. dotnet add package IronBarcodeを実行
  4. すべてのusing Neodynamic.SDK.BarcodeReaderディレクティブを削除
  5. バーコード操作を行うすべてのファイルにusing IronBarCodeを追加
  6. 両方の Neodynamic ライセンス構成ブロックを削除します。
  7. アプリケーションのスタートアップ時に一度IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"を追加
  8. new BarcodeInfo() + プロパティの割り当て + BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path)に置き換え
  9. QRCodeWriter.CreateQrCode()を使用して適切に置き換える
  10. BarcodeReader.Read(imagePath)に渡すことにより置き換える
  11. 2D読み取り用のすべてのBarcodeReader.Read(imagePath)に置き換える
  12. コーラーから対応するcatch (NotSupportedException)ブロックを削除
  13. Neodynamic 2D の読み取りギャップを埋めるためだけに追加されたサードパーティライブラリをすべて削除します。

移行後のテスト

コード128バーコード生成の結果が、以前の寸法とDPI設定に一致することを確認する

  • QRコード生成がスキャン可能な出力を生成することを確認する
  • 1Dバーコード読み取りが、以前のNeodynamic Reader実装と同じ値を返すことを検証します。
  • 以前にNotSupportedExceptionを投げた画像でQRコードの読み取りが成功することを確認 アプリケーションの入力にDataMatrixおよびPDF417形式が含まれている場合、これらの形式の読み取りが成功することを確認します。 アプリケーションがPDFドキュメントを処理する場合、PDFバーコードの読み取りをテストします。
  • 設定ファイルおよび環境変数から、Neodynamicのライセンスキーに関するすべての参照が削除されていることを確認してください。 サードパーティ製の2Dライブラリ(存在する場合)が完全に削除され、残りのインポートで参照されていないことを確認してください。

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

**統合された読み書き機能:**移行後、 IronBarcodeが生成できるすべてのシンボルは、同じライブラリを通して読み戻すことができます。 Neodynamicのジェネレーターとリーダー間の非対称性(QRコード、DataMatrix、PDF417、Aztecは生成できるが消費できない)は解消される。 これまで2D読み取りのために回避策やサードパーティライブラリを必要としていたアプリケーションは、追加の統合作業なしにその機能を利用できるようになります。

単一ライセンス管理: 1つのNuGetパッケージ、1つのライセンスキー、および1つの構成ブロックで、2つの別々の製品サブスクリプションを置き換えることができます。 更新、キーローテーション、環境変数管理の複雑さが半分になる。 管理費の削減は、一時的な利益ではなく、継続的な効果をもたらす。

ネイティブPDFバーコード読み取り: IronBarcodeはPDF文書からバーコードを直接読み取り、バーコード値とともにページ番号のメタデータを返します。 出荷明細書、請求書、または医療記録など、バーコードが埋め込まれた書類を処理するアプリケーションでは、中間的な画像抽出ステップや、バーコード読み取りをサポートするための追加のPDFライブラリは不要になりました。 サポートされているバーコード形式の完全なリストを参照して、対応するシンボル体系と入力タイプの全セットを確認してください。

System.Drawing依存の排除: ネオダイナミックのSDKはSystem.Drawingに依存しており、LinuxおよびDockerコンテナでの追加のネイティブライブラリ設定が必要です。 IronBarcodeにはSystem.Drawingの依存がないため、同じコードベースがWindows、Linux、およびクラウド環境のコンテナ内でプラットフォーム固有の設定変更なしに実行されます。

完全な機能を実現するための簡素化されたライセンス費用: Neodynamic SDKと2D読み取り用の3つ目のライブラリの両方を必要とするプロジェクトでは、 IronBarcodeが単一のライセンスで提供する機能を実現するために、3つの依存関係に対して費用を支払っていました。 生成機能と2D読み取り機能の両方を必要とするプロジェクトの場合、この移行によって技術的なフットプリントとライセンス費用が単一の商用製品に統合されます。 最新の価格情報は、IronBarcodeのライセンスページでご確認いただけます。

ご注意: NeodynamicおよびZXing.NETはそれぞれの所有者の登録商標です。 このサイトは、Neodynamicや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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。