IRONSOFTWAREHOME
ビデオ

MessagingToolkit.Barcode から IronBarcode への移行

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

MessagingToolkit.Barcode は 2013年に最終リリース — バージョン 1.7.0.2 — を公開し、それ以来更新されていません。 このガイドでは、 IronBarcodeへの移行プロセス全体について説明します。移行が必要な理由、コードの変更点、移行が完了したことを確認する方法などです。 このガイドは、バーコード機能を個別に移行するチームと、MessagingToolkit.Barcodeが依存関係として含まれている、より広範な.NET Frameworkのアップグレードを実施するチームの両方を対象としています。

MessagingToolkit.Barcodeから移行する理由

フレームワークの互換性の問題: MessagingToolkit.Barcode は.NET Framework 3.5、4.0、および 4.5 を対象としています。.NET .NET Standardおよび.NET Core は対象として指定されていません。 このパッケージを参照するプロジェクトファイルが、最新 for .NETターゲットフレームワーク( .NET 6、 .NET 7、 .NET 8、または.NET 9)に設定されている場合、 NuGet復元操作はフレームワーク互換性エラーで失敗します。 ビルドは実行されません。 これは警告でも実行時性能低下でもありません。 これはコンパイル時のエラーであり、プロジェクトのビルド自体を不可能にします。 MessagingToolkit.Barcode の削除は、 .NET Framework のアップグレードにおける必須要件であり、オプションのクリーンアップ手順ではありません。

**セキュリティ上のリスク:**前回のコード変更から12年が経過しています。 2014年以降に発見された、ライブラリの画像解析ロジック、ZXing由来のデコード実装、またはその推移的依存関係における脆弱性については、パッチも勧告も、連絡すべきメンテナーも存在しません。 セキュリティスキャンツールは、その荷物を放棄された荷物として検出する。 PCI DSS、HIPAA、SOC 2、ISO 27001などのコンプライアンスフレームワークでは、サードパーティ製ソフトウェアの積極的なパッチ管理が求められます。 放棄されたパッケージは、特定のCVEが特定されているかどうかに関わらず、プロセス上の理由でこれらの監査に不合格となります。

廃止されたプラットフォームターゲット: NuGetパッケージのメタデータには、Silverlight 3、4、および 5 がターゲットプラットフォームとして記載されています。 3機種とも2021年に販売終了となった。Windows Phone 7.0、7.5、7.8、8.0がリストされている。 これらのプラットフォームのサポートは2014年から2017年の間に終了しました。ライブラリは、これらのサポート終了となった環境の後継となるプラットフォームに対応するように更新されることはありませんでした。

機能のギャップ: MessagingToolkit.Barcode は .NET 6 以降の Windows のみの System.Drawing.Bitmap 入力を受け付けていました。 デコード呼び出しごとに1つの結果が返され、複数バーコード画像には対応していません。 PDFの読み取り機能は搭載されていなかったため、PDF文書からバーコードを読み取る必要があるアプリケーションは、ライブラリを呼び出す前に別途抽出手順を実行する必要があった。 出力生成は Bitmap を返し、System.Drawing.Imaging インポートを必要とし、クロスプラットフォームのデプロイメントを妨げます。

基本的な問題

MessagingToolkit.Barcode は System.Drawing への依存と現代の .NET と互換性のないインスタンスベースのワークフローを強制しています。

// MessagingToolkit.Barcode: only compiles on .NET Framework 4.5 or earlier
// System.Drawing.Bitmap throws PlatformNotSupportedException on Linux/.NET 6+
using MessagingToolkit.Barcode;
using System.Drawing;

var decoder = new BarcodeDecoder();
using (var bitmap = new Bitmap("barcode.png"))  // Windows-only in .NET 6+
{
    var result = decoder.Decode(bitmap);          // Single result or null
    if (result != null)
    {
        Console.WriteLine(result.Text);
    }
}

IronBarcode は System.Drawing の依存を完全に排除し、Windows、Linux、macOS、および Docker コンテナで同一に動作します。

// IronBarcode: runs on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;

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

var results = BarcodeReader.Read("barcode.png");  // なし Bitmap, no System.Drawing
foreach (var result in results)
{
    Console.WriteLine(result.Value);
}
C#

IronBarcodeとMessagingToolkit.Barcode:機能比較

フィーチャーMessagingToolkit.BarcodeIronBarcode
最終更新日20142026年(アクティブ)
NuGetバージョン1.7.0.2(最終版)最新の情報、定期的に更新
.NET 6 / 7 / 8 / 9 をサポートなしはい
.NET Framework 4.6.2以降なしはい
.NET Framework 3.5~4.5はいなし
.NET Core のサポートなしはい
.NET Coreなしはい
.NET 修正済みなしはい
Blazorなしはい
クロスプラットフォーム(Linux、macOS)なしはい
Docker / コンテナのサポートなしはい
バーコード読み取り入力タイプビットマップのみパス、ストリーム、バイト配列、PDF
PDFバーコード読み取りなしはい(ネイティブ)
画像ごとに複数のバーコードなしはい
自動フォーマット検出なしはい
バーコード生成の出力形式ビットマップのみPNG、JPEG、SVG、PDF、バイト配列
System.Drawing の依存関係必須None
セキュリティパッチ2014年以降はなし定期的なパッチ
商用サポートNoneプロフェッショナルサポート
コンプライアンス監査結果放棄されたとフラグ付けされています標準監査に合格する

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

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

MessagingToolkit.Barcode パッケージを削除します。

dotnet remove package MessagingToolkit.Barcode
SHELL

プロジェクトが MessagingToolkit.Barcode.dll<HintPath> エントリを通じて .csproj ファイルに直接参照している場合、その参照も削除してください。

IronBarcodeをインストールしてください:

dotnet add package IronBarcode
SHELL

IronBarcodeは.NET Framework 4.6.2から.NET 9までをサポートしています。すべての依存関係がバンドルされた単一パッケージとしてインストールされるため、別途グラフィックライブラリやZXingの参照は必要ありません。

ステップ 2: 名前空間の更新

MessagingToolkit 名前空間を参照するすべてのファイルで IronBarcode 名前空間に置き換えます:

// Remove this
using MessagingToolkit.Barcode;
using System.Drawing;  // if used only for Bitmap input to MessagingToolkit

// Add this
using IronBarCode;

MessagingToolkit.Barcode と共に使用される Bitmap 型のためだけに System.Drawing をインポートしていたファイルは、IronBarcode が導入されるとそのインポートを削除できます。

ステップ 3: ライセンスの初期化

アプリケーションの起動時にライセンス初期化を一度行ってください — Startup.cs、または同等のエントリーポイントで。 実運用にはライセンスキーが必要です。 図書館は、それがなくても試用モードで運営されています。

// Add once at application startup
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

コード移行の例

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

過去のアプローチでは、ファイルパスから Bitmap を構築し、それを BarcodeDecoder インスタンスに渡す必要がありました。 IronBarcodeはファイルパスを直接受け付けます。

MessagingToolkit.バーコードアプローチ:

using MessagingToolkit.Barcode;
using System.Drawing;

public string ReadBarcodeValue(string imagePath)
{
    var decoder = new BarcodeDecoder();
    using (var bitmap = new Bitmap(imagePath))
    {
        var result = decoder.Decode(bitmap);
        return result?.Text;
    }
}

IronBarcodeのアプローチ:

using IronBarCode;

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

IronBarcode バージョンは Bitmap の構築と単一オブジェクトに対する null コンディショナルパターンを除去します。 BarcodeReader.Read() はコレクションを返します — 何も見つからない場合は空のコレクション — したがって旧の単一結果の戻り値に対する null チェックを .FirstOrDefault() に置き換えます。

結果からフォーマット情報にアクセスする

MessagingToolkit.Barcode は検出されたフォーマットを result.BarcodeFormat を通じて公開していました。 IronBarcode はそれを result.Format を通じて公開します。 どちらも結果オブジェクト上の列挙値であり、列挙型の名称が異なります。

MessagingToolkit.バーコードアプローチ:

using MessagingToolkit.Barcode;
using System.Drawing;

var decoder = new BarcodeDecoder();
using (var bitmap = new Bitmap("barcode.png"))
{
    var result = decoder.Decode(bitmap);
    if (result != null)
    {
        Console.WriteLine($"Value: {result.Text}");
        Console.WriteLine($"Format: {result.BarcodeFormat}");
    }
}

IronBarcodeのアプローチ:

using IronBarCode;

var results = BarcodeReader.Read("barcode.png");
var first = results.FirstOrDefault();
if (first != null)
{
    Console.WriteLine($"Value: {first.Value}");
    Console.WriteLine($"Format: {first.Format}");
}

プロパティ名は .Text から .Value.BarcodeFormat から .Format に変更されます。 列挙型は BarcodeFormat (MessagingToolkit) から BarcodeEncoding (IronBarcode) に変更されますが、.Format.ToString() は表示またはログ記録のための同等の可読文字列を生成します。

バーコードの生成

MessagingToolkit.Barcode はインスタンスベースの BarcodeEncoder を使用し、.Encode() を呼び出す前にプロパティセットフォーマットを持っていました。 IronBarcodeは、エンコードタイプをパラメータとして受け取る静的メソッドを使用します。

MessagingToolkit.バーコードアプローチ:

using MessagingToolkit.Barcode;

public void GenerateQrCode(string data, string outputPath)
{
    var encoder = new BarcodeEncoder();
    encoder.Format = BarcodeFormat.QrCode;
    var bitmap = encoder.Encode(data);
    bitmap.Save(outputPath);
}

IronBarcodeのアプローチ:

using IronBarCode;

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

Code 128やその他の1次元バーコードを作成する場合、異なるエンコード定数を使用するだけで、同じ静的パターンが適用されます。

// Code 128
BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .SaveAsPng("code128.png");

// EAN-13
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("ean13.png");

ターゲットフレームワークの更新

MessagingToolkit.Barcode が削除され、すべての参照が置き換えられたら、プロジェクトファイルのターゲットフレームワークを更新できます。 この変更は古い依存関係によって妨げられていましたが、それを削除することで可能になります。

MessagingToolkit.Barcode Approach(プロジェクトファイル):

<PropertyGroup>
  <TargetFramework>net472</TargetFramework>
</PropertyGroup>
XML

IronBarcodeのアプローチ(プロジェクトファイル):

<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
XML

IronBarcodeは.NET Framework 4.6.2から.NET 9までをサポートしているため、フレームワークのアップグレードが完了する前にインストールできます。 これにより、移行を段階的に行うことができます。IronBarcodeをMessagingToolkit.Barcodeと並行してインストールし、すべての使用箇所を置き換え、新しいコードを検証し、古いパッケージを削除し、最後にターゲットフレームワークを変更します。

PDF文書からバーコードを読み取る

MessagingToolkit.BarcodeにはPDFのサポートがありませんでした。 PDFファイルからバーコードを読み取るには、バーコードデコーダーを呼び出す前に、各ページから別のライブラリを通して画像を抽出する必要があります。 IronBarcodeは、画像と同じ方法でPDFファイルを直接読み取ります。

MessagingToolkit.バーコードアプローチ:

// Not supported — required external PDF page extraction before decode
// なし equivalent exists in MessagingToolkit.Barcode
C#

IronBarcodeのアプローチ:

using IronBarCode;

// Read all barcodes from every page of a PDF document
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})");
}

スキャンされた文書、出荷明細書、または複数ページの請求書バッチを処理するアプリケーションは、追加のライブラリや設定なしに、移行の一環としてこの機能を利用できるようになります。

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

MessagingToolkit.BarcodeIronBarcodeノート
new BarcodeDecoder()静的 — BarcodeReader.Read()インスタンスは不要です
barcodeReader.Decode(bitmap)BarcodeReader.Read(path)パス、ストリーム、バイト配列、またはPDFを受け入れます
result.Textresult.Value物件名が変更されました
result.BarcodeFormatresult.Formatプロパティ名が変更されました。 列挙型は BarcodeEncoding です。
new BarcodeEncoder()静的 — BarcodeWriter.CreateBarcode()インスタンスは不要です
barcodeWriter.Format = BarcodeFormat.QrCodeBarcodeEncoding.QRCode (パラメーター)フォーマットはプロパティではなく、パラメータとして渡されます。
barcodeWriter.Encode("data")Bitmap を返します。BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode)Bitmapではなく、fluentの結果を返します。
bitmap.Save("path.png").SaveAsPng("path.png")結果オブジェクトに対する流暢なメソッド
BarcodeFormat.QrCodeBarcodeEncoding.QRCode列挙型の名前空間と値の名前が変更されました
BarcodeFormat.Code128BarcodeEncoding.Code128同じシンボル名だが、名前空間が異なる
BarcodeFormat.Ean13BarcodeEncoding.EAN13大文字表記が異なる
見つからない場合は null を返します空のコレクションを返します.Any() または .FirstOrDefault() を確認してください。
ビットマップ入力のみパス、ストリーム、バイト配列、PDFシステム図面は不要です。
.NET Framework 3.5~4.5のみ.NET 4.6.2 から.NET 9最新 for .NETを完全にサポート

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

問題1:パッケージ更新後に名前空間が見つからない

問題: MessagingToolkit.Barcode を削除し IronBarcode を追加した後、CS0246: The type or namespace name 'BarcodeDecoder' could not be found でコンパイルに失敗します。

解決策: 古い名前空間 using MessagingToolkit.Barcode; は、古いライブラリを参照するすべてのファイルで using IronBarCode; (大文字の C に注意) に置き換える必要があります。 プロジェクト全体で古い名前空間文字列を検索すると、影響を受けるすべてのファイルが見つかります。

grep -r "using MessagingToolkit.Barcode" --include="*.cs" .
grep -r "BarcodeDecoder\|BarcodeEncoder" --include="*.cs" .
SHELL

問題2:バーコードリーダーにおける名前空間間の曖昧さ

問題: プロジェクトが両方の MessagingToolkit.BarcodeIronBarcode を分割移行中に参照している場合、BarcodeReader が両方の名前空間間で曖昧さを持つ可能性があります。

**解決策:**移行期間中は参照を明示的に修飾する。

// Use the fully qualified name while both packages are installed
var results = IronBarCode.BarcodeReader.Read("barcode.png");

MessagingToolkit.Barcode へのすべての参照が置き換えられ、古いパッケージが削除された後は、修飾子を削除し、using IronBarCode; ディレクティブが十分です。

問題3:パッケージ削除後もターゲットフレームワークがnet472に設定されたままになっている

問題: MessagingToolkit.Barcode を削除し IronBarcode をインストールした後も、プロジェクトファイルは net472 をターゲットにしています。 ビルド警告は、最新 for .NET APIが利用できないことを示しています。

解決策: 依存関係が削除された後、.csproj ファイルの <TargetFramework> 要素を更新してください。 IronBarcode は net472 (.NET Framework 4.6.2 互換性を介して) と現代のターゲットをサポートします。 net8.0 への変更は、プロジェクトに他のレガシー依存関係が残っていないことを確認する必要があります。

<!-- Update this line in the .csproj file -->
<TargetFramework>net8.0</TargetFramework>
XML

変更後に dotnet build を実行して、対応が必要な残存するレガシー依存関係を特定してください。

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

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

コードベースを監査して、MessagingToolkit.Barcode を参照しているすべての箇所を特定します。

# Find all using statements
grep -r "using MessagingToolkit.Barcode" --include="*.cs" .

# Find decoder instantiations
grep -r "BarcodeDecoder" --include="*.cs" .

# Find encoder instantiations
grep -r "BarcodeEncoder" --include="*.cs" .

# Find decode calls
grep -r "\.Decode(" --include="*.cs" .

# Find encode calls
grep -r "\.Encode(" --include="*.cs" .

# Find project file references
grep -r "MessagingToolkit" --include="*.csproj" .
grep -r "MessagingToolkit" --include="packages.config" .
SHELL

変更が必要なすべてのファイルを文書化してください。 System.Drawing.Bitmap がデコーダーへの入力として使用された場所をメモします — これらの使用法も更新する必要があります。

コード更新タスク

  1. dotnet remove package MessagingToolkit.Barcode を実行してパッケージを削除します
  2. dotnet add package IronBarcode を実行して IronBarcode をインストールします
  3. アプリケーションの起動時に IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; を追加します
  4. すべての using MessagingToolkit.Barcode; 文を using IronBarCode; に置き換えます
  5. すべての new BarcodeDecoder() パターンを BarcodeReader.Read() 静的呼び出しに置き換えます
  6. すべての new BarcodeEncoder() パターンを BarcodeWriter.CreateBarcode() 静的呼び出しに置き換えます
  7. すべての result.Text 参照を result.Value に更新します
  8. すべての result.BarcodeFormat 参照を result.Format に更新します
  9. すべての barcodeWriter.Format = BarcodeFormat.X パターンを更新して、エンコーディングをパラメータとして渡します
  10. bitmap.Save().SaveAsPng() または IronBarcode 結果の適切な出力メソッドに置き換えます。
  11. MessagingToolkit 用に Bitmap 入力のみで使用された using System.Drawing; インポートを削除します
  12. フレームワークのアップグレードが移行の一部である場合は、プロジェクトファイルの <TargetFramework> を更新してください

移行後のテスト

  • dotnet build がエラーゼロで MessagingToolkit への参照ゼロで完了することを確認します
  • grep -r "MessagingToolkit" --include="*.cs" . を実行し、ゼロの結果を確認します
  • 実際のバーコード画像を使用してバーコード読み取りをテストし、.Value が期待される文字列を返すことを確認します
  • 複数のバーコード画像を使用してバーコード読み取りをテストし、コレクション内のすべてのバーコードが返されることを確認します。
  • バーコード生成をテストし、出力ファイルが想定される形式とエンコーディングに一致することを確認します。 PDF読み取り機能を使用する場合は、代表的なPDF文書でテストを行い、ページ番号メタデータが正しいことを確認してください。 ターゲットフレームワークが変更された場合は、新しいランタイムでテストSuite全体を実行して、その他の互換性の問題を特定してください。

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

フレームワークのアップグレードがブロックされなくなります: MessagingToolkit.Barcode が削除されると、プロジェクトファイルのターゲットフレームワークを任意の最新 for .NETバージョンに更新できます。 この変更により、 .NET 8 のパフォーマンス向上、C# 12 の言語機能、ネイティブの非同期パターン、および.NET Standard 2.0 以降を必要とするNuGetパッケージのエコシステム全体を利用できるようになります。

クロスプラットフォームデプロイメント: IronBarcode の内部画像パイプラインは .NET 6 以降の Windows のみの System.Drawing に依存していません。 移行後、アプリケーションはバーコードライブラリからの PlatformNotSupportedException に遭遇することなく、Linux サーバー、macOS 開発環境、Docker コンテナ、およびクラウド機能ランタイムにデプロイできます。

解決済みのコンプライアンス違反事項: IronBarcodeは、文書化されたメンテナンスプロセスを通じて定期的なセキュリティアップデートを受けています。 放棄された依存関係を、積極的にメンテナンスされている依存関係に置き換えることで、PCI DSS、HIPAA、SOC 2、およびサードパーティライブラリの積極的なパッチ管理を必要とする同様のフレームワークにおける監査指摘事項を解決できます。

ネイティブ PDF サポート: BarcodeReader.Read() は PDF ファイルパスを直接受け付けます。バーコードデコード前に別の PDF 画像抽出ステップを必要としません。 スキャンされた文書や請求書のバッチを処理するアプリケーションは、新しいライブラリやパイプラインステージを追加することなく、この機能の恩恵を受けることができます。

拡張された出力オプション: 生成されたバーコードは、PNG、JPEG、SVG、PDF、または BarcodeWriter.CreateBarcode() によって返されるフルーエントな結果オブジェクトを通じて base64 エンコードされた文字列として利用可能です。 これにより、MessagingToolkit.Barcode からの System.Drawing.Bitmap 戻り型を置き換え、Windows のみの出力制約を解消し、ウェブレスポンスやデータベースストレージに直接埋め込むことが可能になります。

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