MessagingToolkit Barcode vs IronBarcode: C# Barcode Library Comparison
MessagingToolkit.Barcode lists Silverlight 5 and Windows Phone 7 in its target platforms. Both have been discontinued for years. If this library is in your codebase, the question is not whether to replace it — it is what you are waiting for.
Understanding MessagingToolkit.Barcode
MessagingToolkit.Barcode was a .NET port of the Java ZXing barcode library, extended with additional messaging integrations. The library launched around 2011 and saw active development through 2012 and into 2013. Its final release — version 1.7.0.2 — was published in 2014. The GitHub repository remains accessible but shows no activity: no commits, no issue responses, no pull request reviews. The project is preserved, not maintained.
The library was designed for the .NET Framework era and the mobile platforms that defined that period. It offered barcode decoding and encoding through an instance-based API, accepting System.Drawing.Bitmap inputs and returning result objects with .Text and .BarcodeFormat properties. For .NET Framework 4.x applications running on Windows in 2012, this approach was practical and commonly used.
As a port of ZXing, MessagingToolkit.Barcode shared the underlying decode engine of that Java library but layered its own API surface and messaging-oriented extension points on top. The library never moved beyond its .NET Framework roots. No .NET Standard target was published, no .NET Core support was added, and no updates of any kind followed the 2014 release.
Key characteristics of MessagingToolkit.Barcode:
- Final release year: 2014, version 1.7.0.2, with no subsequent updates
- ZXing heritage: A port of the Java ZXing library with .NET-specific extensions
- Instance-based API: Requires instantiating
BarcodeDecoderandBarcodeEncoderobjects for each operation - System.Drawing dependency: Accepts and returns
System.Drawing.Bitmap, making it Windows-only in modern .NET - Single result per decode call: Returns one result object (or null) rather than a collection
- No PDF support: Input is limited to bitmap objects; no native document reading
- No automatic format detection: Format must be pre-configured or detected by the library from the image alone
- Discontinued platform targets: Lists Silverlight 3, 4, and 5; Windows Phone 7.0, 7.5, 7.8, and 8.0 in its NuGet metadata
- No modern .NET target framework moniker: Will not compile in projects targeting .NET Core, .NET 5, or any later version
The Platform and Maintenance Record
The NuGet package metadata for MessagingToolkit.Barcode documents its intended targets. Each entry in the following table represents a platform that was current or near-current at the time of the library's development:
| Platform | Status in 2026 |
|---|---|
| Silverlight 3 | Discontinued — browser plugin removed 2021 |
| Silverlight 4 | Discontinued — browser plugin removed 2021 |
| Silverlight 5 | Discontinued — browser plugin removed 2021 |
| Windows Phone 7.0 | Discontinued — end of support 2014 |
| Windows Phone 7.5 | Discontinued — end of support 2014 |
| Windows Phone 7.8 | Discontinued — end of support 2014 |
| Windows Phone 8.0 | Discontinued — end of support 2017 |
| .NET Framework 3.5 | Security patches only, no new features |
| .NET Framework 4.0 | Security patches only, no new features |
| .NET Framework 4.5 | Security patches only, no new features |
The library has no compatible target framework for .NET Core, .NET 5, .NET 6, .NET 7, .NET 8, or .NET 9. Projects targeting these runtimes will encounter a build-time failure when the package cannot resolve a compatible framework moniker — not a runtime warning, but a compilation error.
Understanding IronBarcode
IronBarcode is a commercial barcode reading and generation library for .NET, developed and maintained by Iron Software. It operates through a static API model: BarcodeReader.Read() for decoding and BarcodeWriter.CreateBarcode() for encoding, without requiring instantiated reader or writer objects. The library bundles its own image processing pipeline and does not depend on System.Drawing, making it compatible across Windows, Linux, macOS, and container environments.
IronBarcode accepts multiple input types for reading: file paths, Stream objects, byte arrays, and PDF document paths. Results are returned as collections rather than single nullable objects, enabling multi-barcode images to be handled without separate configuration. Format detection is automatic — the library identifies the barcode type from the image content without requiring the caller to specify it in advance.
For generation, IronBarcode returns a fluent result object from BarcodeWriter.CreateBarcode() that supports multiple output formats including PNG, JPEG, SVG, PDF, and base64-encoded strings. The library receives regular updates and publishes new NuGet releases actively.
Key characteristics of IronBarcode:
- Static API design:
BarcodeReader.Read()andBarcodeWriter.CreateBarcode()require no instantiated objects - Cross-platform: Runs on Windows, Linux, macOS, Docker containers, and cloud functions
- No System.Drawing dependency: Uses an internal image pipeline compatible with all modern .NET platforms
- Multi-result reading: Returns a collection from every decode call, supporting multi-barcode images
- PDF reading: Reads barcodes directly from PDF documents without external extraction steps
- Automatic format detection: Identifies barcode type from image content without caller configuration
- Fluent generation output: Save as PNG, JPEG, SVG, PDF, or byte array from a single result object
- Active maintenance: Regular NuGet releases with security patches and new features
- Commercial licensing: Requires a license key for production use; operates in trial mode without one
Feature Comparison
The following table provides a high-level view of the fundamental differences between MessagingToolkit.Barcode and IronBarcode:
| Feature | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| Last updated | 2014 | 2026 (active) |
| Modern .NET support | No | Yes (.NET 6, 7, 8, 9) |
| Cross-platform | No (Windows only) | Yes (Windows, Linux, macOS) |
| PDF barcode reading | No | Yes |
| Automatic format detection | No | Yes |
| Active security patches | No | Yes |
| Commercial support | None | Professional support available |
Detailed Feature Comparison
| Feature | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| Maintenance | ||
| Last updated | 2014 | 2026 (active) |
| NuGet version | 1.7.0.2 (final) | Current, regularly updated |
| Active development | No | Yes |
| Security patches | None since 2014 | Regular patches |
| Platform | ||
| .NET Framework 3.5–4.5 | Yes | No |
| .NET Framework 4.6.2+ | No | Yes |
| .NET Core | No | Yes |
| .NET 5 / 6 / 7 / 8 / 9 | No | Yes |
| ASP.NET Core | No | Yes |
| .NET MAUI | No | Yes |
| Blazor | No | Yes |
| Linux / macOS | No | Yes |
| Docker / containers | No | Yes |
| Reading | ||
| Input types | Bitmap only | Path, stream, byte array, PDF |
| PDF reading | No | Yes (native) |
| Automatic format detection | No | Yes |
| Multi-barcode per image | No | Yes |
| System.Drawing dependency | Required | None |
| Generation | ||
| Output formats | Bitmap only | PNG, JPEG, SVG, PDF, byte array |
| Fluent output API | No | Yes |
| System.Drawing dependency | Required | None |
| Licensing | ||
| Commercial support | None | Professional support available |
| Compliance audit result | Flagged as abandoned | Passes standard audits |
Platform and Framework Support
The platform story for these two libraries is defined by a 12-year gap. MessagingToolkit.Barcode was designed for a specific moment in .NET history; IronBarcode was designed for the present.
MessagingToolkit.Barcode Approach
MessagingToolkit.Barcode targets .NET Framework 3.5, 4.0, and 4.5 exclusively. It has no .NET Standard moniker, no .NET Core target, and no compatibility shim for modern runtimes. When a project file references this package and targets any modern .NET version, the NuGet restore operation fails with a framework compatibility error — the build does not proceed.
The platform table in the NuGet metadata makes this concrete. Silverlight 3, 4, and 5 are listed targets; all three have been discontinued since 2021. Windows Phone 7.0, 7.5, 7.8, and 8.0 are listed; all reached end of support between 2014 and 2017. The remaining targets — .NET Framework 3.5, 4.0, and 4.5 — remain technically functional on Windows but receive only security patches from Microsoft, with no new feature development.
The practical consequence is that MessagingToolkit.Barcode acts as a framework modernization blocker. A project file that targets net472 and references this package cannot be changed to net8.0 without first removing the package. The package is not merely outdated — it actively prevents the target framework change that would allow the project to access modern .NET capabilities.
Explore the IronBarcode platform documentation for the full list of supported frameworks and deployment targets.
IronBarcode Approach
IronBarcode supports .NET Framework 4.6.2 through .NET 9, covering both legacy Windows applications and modern cross-platform deployments. A single NuGet package installs on all supported platforms without requiring separate graphics libraries or platform-specific configuration.
The cross-platform support is meaningful in practice. IronBarcode's internal image pipeline does not depend on System.Drawing, which became Windows-only in .NET 6. Applications targeting Linux or macOS — including those running in Docker containers, Azure App Service on Linux, or AWS Lambda — use the same IronBarcode API and behavior as Windows deployments.
API Design
The API surface of MessagingToolkit.Barcode was designed around instance-based objects and System.Drawing.Bitmap inputs. IronBarcode's API is static and accepts multiple input types. Both libraries encode and decode barcodes, but the mechanics of calling them differ significantly.
MessagingToolkit.Barcode Approach
Reading with MessagingToolkit.Barcode required creating a BarcodeDecoder instance, constructing a Bitmap from the image file, passing the bitmap to .Decode(), and checking the result for null before accessing .Text. Generation followed the same instance pattern: create a BarcodeEncoder, set its .Format property, call .Encode() to receive a Bitmap, then call .Save() on that bitmap.
// Only compiles on .NET Framework 4.5 or earlier
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
// Only compiles on .NET Framework 4.5 or earlier
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
Imports MessagingToolkit.Barcode
Imports System.Drawing
' Reading
Dim barcodeReader As New BarcodeDecoder()
Dim bitmap As New Bitmap("barcode.png")
Dim result = barcodeReader.Decode(bitmap)
Dim value As String = result?.Text
Dim format As String = result?.BarcodeFormat.ToString()
' Writing
Dim barcodeWriter As New BarcodeEncoder()
barcodeWriter.Format = BarcodeFormat.QrCode
Dim outputBitmap = barcodeWriter.Encode("Hello World")
outputBitmap.Save("output.png")
The Bitmap dependency is not incidental. System.Drawing.Bitmap requires GDI+ on Windows. In .NET 6 and later, attempting to use System.Drawing on Linux or macOS throws a PlatformNotSupportedException at runtime. Even if the MessagingToolkit.Barcode assembly could be loaded in a modern .NET project — it cannot due to the missing framework target — the Bitmap dependency would prevent cross-platform deployment regardless.
IronBarcode Approach
IronBarcode uses static methods throughout. BarcodeReader.Read() accepts a file path, a Stream, a byte array, or a PDF file path — no Bitmap required. The result is a collection, not a nullable single object. Generation uses BarcodeWriter.CreateBarcode() with the encoding type passed as a parameter, and the result object exposes save methods directly.
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
// Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
Imports IronBarCode
' Works on .NET 6, 7, 8, 9 — Windows, Linux, macOS, Docker
IronBarCode.License.LicenseKey = "YOUR-KEY"
' Reading
Dim results = BarcodeReader.Read("barcode.png")
Dim value As String = results.FirstOrDefault()?.Value
Dim format As String = results.FirstOrDefault()?.Format.ToString()
' Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode) _
.SaveAsPng("output.png")
For detailed guidance on reading barcodes from images, see how to read barcodes from images. For generating 1D barcodes including Code 128, EAN-13, and UPC formats, see how to create 1D barcodes.
Security and Maintenance
An abandoned library carries a security posture that differs categorically from an actively maintained one. The difference is not whether a CVE has been filed — it is whether a CVE could ever be addressed.
MessagingToolkit.Barcode Approach
MessagingToolkit.Barcode has received no updates since 2014. Any vulnerability discovered after that date — in the library's own image parsing logic, in its ZXing-derived decode implementation, or in its transitive dependencies — remains permanently unpatched. There is no maintainer to notify, no security advisory process to monitor, and no release mechanism through which a fix could reach users even if one were developed.
Security scanning tools — Snyk, WhiteSource, GitHub Dependabot, NuGet audit — flag abandoned packages as high risk. The flagging is not contingent on a confirmed CVE; it reflects the absence of any process by which confirmed vulnerabilities could be remediated. That is a categorically different risk profile than a library with an active maintainer and a documented security response process.
For teams operating under compliance frameworks — PCI DSS, HIPAA, SOC 2, ISO 27001 — this has practical audit consequences. These frameworks require active patch management of third-party software. An abandoned package with no response mechanism for vulnerabilities will fail a compliance audit regardless of whether a specific CVE has been filed against it. The audit finding is the absence of a maintainable dependency, not the presence of a known exploit.
IronBarcode Approach
IronBarcode receives regular NuGet updates covering security patches, dependency updates, and new functionality. The library is developed by Iron Software, which maintains a documented support process and publishes release notes for each update. Security advisories, when applicable, are addressed in patch releases.
IronBarcode supports over 50 barcode formats including all formats that MessagingToolkit.Barcode handled — QR Code, Code 128, EAN-13, EAN-8, UPC-A, and others — alongside formats the older library never supported: DataMatrix, Aztec, PDF417, and the full range of modern 2D symbologies.
API Mapping Reference
The following table maps MessagingToolkit.Barcode API elements to their IronBarcode equivalents:
| MessagingToolkit.Barcode | IronBarcode | Notes |
|---|---|---|
new BarcodeDecoder() |
Static — BarcodeReader.Read() |
No instance required |
barcodeReader.Decode(bitmap) |
BarcodeReader.Read(path) |
Accepts path, stream, or byte array |
result.Text |
result.Value |
Property renamed |
result.BarcodeFormat |
result.Format |
Property renamed |
new BarcodeEncoder() |
Static — BarcodeWriter.CreateBarcode() |
No instance required |
barcodeWriter.Format = BarcodeFormat.QrCode |
BarcodeEncoding.QRCode (parameter) |
Format passed as parameter, not property |
barcodeWriter.Encode("data") returns Bitmap |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode) |
Returns fluent result, not Bitmap |
bitmap.Save("path.png") |
.SaveAsPng("path.png") |
Fluent method on result object |
BarcodeFormat.QrCode |
BarcodeEncoding.QRCode |
Enum namespace and value renamed |
BarcodeFormat.Code128 |
BarcodeEncoding.Code128 |
Same symbolic name |
| Returns null if not found | Returns empty collection | Check .Any() or .FirstOrDefault() |
| .NET Framework 3.5–4.5 only | .NET 4.6.2 through .NET 9 | Full modern .NET support |
When Teams Consider Moving from MessagingToolkit.Barcode to IronBarcode
The scenarios that prompt teams to evaluate this transition share a common structure: a project requirement has moved beyond what a 2014 framework-era library can accommodate.
Framework Modernisation Requirements
The most common trigger is a planned or in-progress .NET upgrade. When a team decides to move a project from .NET Framework 4.x to .NET 6 or later, the dependency graph must be audited for packages that lack modern framework support. MessagingToolkit.Barcode will appear in that audit as a blocking dependency — one that cannot be resolved against a modern target framework moniker. The migration to IronBarcode is therefore a prerequisite for the broader .NET upgrade, not a separate initiative. Teams undertaking application modernisation typically discover this dependency early in the upgrade analysis phase.
Security and Compliance Obligations
A second scenario involves security reviews and compliance audits. Teams operating under PCI DSS, HIPAA, SOC 2, or ISO 27001 frameworks undergo periodic audits that examine third-party dependency health. An abandoned package with no security response mechanism fails these audits on process grounds, independent of whether a specific vulnerability has been identified. When a security team flags MessagingToolkit.Barcode as a non-compliant dependency, the resolution is replacement — there is no patch to apply, no version to upgrade to, and no vendor to contact for a security advisory. The migration to IronBarcode resolves the audit finding by replacing a dependency with no maintenance path with one that receives regular security updates.
Capability Expansion
A third scenario arises when new requirements extend beyond what MessagingToolkit.Barcode can deliver. Applications that process scanned documents or PDF files need barcode reading from those formats — MessagingToolkit.Barcode accepted only bitmap inputs, making PDF reading impossible without a separate extraction layer. Applications that generate barcodes for web delivery need SVG or base64 output — MessagingToolkit.Barcode returned a Bitmap, requiring additional conversion steps and a System.Drawing.Imaging dependency. When the product requirements expand into these areas, the limitations of the older library become engineering constraints that cannot be worked around within its API surface.
Platform Target Growth
A fourth scenario is the addition of new deployment targets. Teams that initially built Windows-only applications and are expanding to Linux hosting, macOS development environments, Docker containers, or cloud functions on Linux runtimes encounter the System.Drawing dependency as a blocking issue. MessagingToolkit.Barcode requires System.Drawing.Bitmap for all input and output operations, and System.Drawing is Windows-only in .NET 6 and later. Any deployment target that is not Windows makes this dependency a runtime failure, not merely a compatibility concern. The migration to IronBarcode removes the System.Drawing requirement entirely, enabling the cross-platform deployment the team is attempting to achieve.
Common Migration Considerations
Teams transitioning from MessagingToolkit.Barcode to IronBarcode should be aware of several technical differences that affect the mechanics of the migration.
Namespace Replacement
Every file that contains using MessagingToolkit.Barcode; requires an update to using IronBarCode;. A codebase-wide search for the old namespace string is the most reliable starting point for identifying the scope of the migration. Files that import System.Drawing solely for the Bitmap type used with MessagingToolkit.Barcode may have that import removed entirely once IronBarcode is in place, since IronBarcode does not require it.
Target Framework Change
Removing MessagingToolkit.Barcode from the project file enables the target framework moniker to be updated. The change from <TargetFramework>net472</TargetFramework> to <TargetFramework>net8.0</TargetFramework> becomes possible once the blocking dependency is removed. IronBarcode supports both sides of this change — it is compatible with .NET Framework 4.6.2 and with .NET 8 — so it can be installed before the framework upgrade is finalized, allowing the migration to be staged rather than performed in a single step.
BarcodeWriter Namespace Differences
MessagingToolkit.Barcode used BarcodeEncoder as the generation class, with the format set as a property (barcodeWriter.Format = BarcodeFormat.QrCode) before calling .Encode(). IronBarcode uses BarcodeWriter.CreateBarcode() as a static method, with the encoding type passed as a parameter. The enum names differ: BarcodeFormat.QrCode becomes BarcodeEncoding.QRCode, and BarcodeFormat.Code128 becomes BarcodeEncoding.Code128. The result of CreateBarcode() is a fluent object with .SaveAsPng(), .SaveAsJpeg(), .SaveAsSvg(), and other output methods — it does not return a Bitmap.
Additional IronBarcode Capabilities
IronBarcode provides capabilities that go beyond the feature set discussed in the sections above:
- PDF barcode reading:
BarcodeReader.Read("document.pdf")reads barcodes from every page of a PDF document, returning results that include page number metadata. No external PDF extraction step is required. - Batch processing: Multiple files — images and PDFs mixed — can be read in a single pass. Automatic format detection applies to the barcode type, not just the file format.
- QR code customization: Generated QR codes can include embedded logos, custom colors, and adjustable quiet zones through the
QRCodeWriterAPI. - Asynchronous multithreading:
BarcodeReader.ReadAsync()provides a native async overload for integration with async/await patterns in ASP.NET Core and other asynchronous .NET applications. - Multiple output formats for generation: Generated barcodes can be saved as PNG, JPEG, SVG, PDF, or retrieved as a base64-encoded string for direct embedding in HTML responses or database storage.
.NET Compatibility and Future Readiness
IronBarcode supports the full range of current .NET versions — .NET Framework 4.6.2 through .NET 9 — and receives updates that track new .NET releases as they become available. The library's internal image pipeline avoids dependencies on System.Drawing or other platform-specific graphics APIs, meaning the same package and API work identically across Windows, Linux, macOS, and container environments. As .NET 10 and subsequent releases are published, IronBarcode's active development cadence ensures compatibility is maintained without requiring teams to defer .NET upgrades due to library constraints.
Conclusion
MessagingToolkit.Barcode and IronBarcode represent two very different moments in .NET library development. MessagingToolkit.Barcode was built for .NET Framework 4.x and the mobile platforms of 2011 to 2014. IronBarcode was built for the .NET that exists in 2026 — cross-platform, container-friendly, and actively maintained. The technical gap between them is not a matter of feature parity; it is a matter of runtime compatibility. MessagingToolkit.Barcode will not compile in a modern .NET project, which means the comparison, in most practical scenarios, is not between two competing options.
MessagingToolkit.Barcode occupies a narrow legitimate use case: a project that targets .NET Framework 4.x exclusively, runs only on Windows, will never be upgraded to a newer runtime, and operates in an environment where security audit requirements are not enforced. In that specific configuration, the library produces output and the technical blocker does not apply. That configuration describes very few active projects in 2026, and the security concern — twelve years without patches — applies to all configurations regardless.
IronBarcode is appropriate for teams that need barcode functionality in any modern .NET context: .NET 6, 7, 8, or 9; Linux or macOS deployment; Docker or cloud-hosted environments; ASP.NET Core applications; or any project that processes PDFs or requires barcodes in output formats beyond a Windows bitmap. The static API reduces the instantiation overhead of the instance-based model, and the absence of a System.Drawing dependency removes a meaningful cross-platform constraint.
The fundamental evaluation is straightforward. For teams on .NET Framework 4.x with no plans to change, MessagingToolkit.Barcode continues to function within those constraints. For every other scenario — modernisation, compliance, cross-platform deployment, or capability expansion — MessagingToolkit.Barcode is not a viable option, and IronBarcode is a direct replacement with a small, well-defined migration path.
Frequently Asked Questions
What is MessagingToolkit Barcode?
MessagingToolkit Barcode is a .NET barcode library for generating and reading barcodes in C# applications. It is one of several alternatives developers evaluate when selecting a barcode solution for .NET projects.
What are the main differences between MessagingToolkit Barcode and IronBarcode?
IronBarcode uses a static, stateless API requiring no instance management, while MessagingToolkit Barcode typically requires instance creation and configuration before use. IronBarcode also provides native PDF support, automatic format detection, and single-key licensing across all environments.
Is IronBarcode easier to license than MessagingToolkit Barcode?
IronBarcode uses a single license key covering both development and production deployments. This simplifies CI/CD pipelines and Docker configurations compared to licensing systems that separate SDK keys from runtime keys.
Does IronBarcode support all barcode formats that MessagingToolkit Barcode supports?
IronBarcode supports over 30 barcode symbologies including QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1, and many more. Format auto-detection means no explicit format enumeration is required.
Does IronBarcode support native PDF barcode reading?
Yes. IronBarcode reads barcodes directly from PDF files using BarcodeReader.Read("document.pdf") without requiring a separate PDF rendering library. Per-page results include page number, barcode format, value, and confidence score.
How does IronBarcode handle batch processing compared to MessagingToolkit Barcode?
IronBarcode's static methods are stateless and naturally thread-safe, enabling direct use of Parallel.ForEach without per-thread instance management. There is no throughput ceiling at any pricing tier.
What .NET versions does IronBarcode support?
IronBarcode supports .NET Framework 4.6.2+, .NET Core 3.1, and .NET 5, 6, 7, 8, and 9 in a single NuGet package. Platform targets include Windows x64/x86, Linux x64, and macOS x64/ARM.
How do I install IronBarcode in a .NET project?
Install IronBarcode via NuGet: run 'Install-Package IronBarCode' in the Package Manager Console, or 'dotnet add package IronBarCode' in the CLI. No additional SDK installers or runtime files are required.
Can I evaluate IronBarcode before purchasing, unlike MessagingToolkit?
Yes. IronBarcode's trial mode returns complete decoded barcode values — only generated output images receive a watermark. You can benchmark read accuracy on your own documents before committing to a purchase.
What is the pricing difference between MessagingToolkit Barcode and IronBarcode?
IronBarcode starts at $749 for a perpetual single-developer license covering development and production. Pricing details and volume options are available on the IronBarcode licensing page. There is no separate runtime license requirement.
Is it straightforward to migrate from MessagingToolkit Barcode to IronBarcode?
Migration from MessagingToolkit Barcode to IronBarcode primarily involves replacing instance-based API calls with IronBarcode's static methods, removing licensing boilerplate, and updating result property names. Most migrations involve reducing code rather than adding it.
Does IronBarcode generate QR codes with logos?
Yes. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") embeds a brand image in a QR code natively with configurable error correction. Colored QR codes are also supported via ChangeBarCodeColor().

