Categories
App Development NFC Windows

Porting the NFC / NDEF Library to .NET Standard

With around 20,000 downloads, the “NFC / NDEF Library for Proximity APIs” is the most popular NFC library for C#. The library has initially been released in 2012 and has since been extended to cover many standardized as well as common NDEF use cases – also thanks to the support of the netidee open innovation platform.

Lately, the underlying platforms have evolved, and now the library has adapted. The main NFC library has now been ported to .NET Standard, which is a common baseline that makes the library compatible to even more different platforms. The new version 4.1.0 is now available under the open source LGPL license on GitHub, as well as on NuGet.

In addition to running on Windows, the library now fully supports all platforms that support .NET Core (like Linux and Mac), as well as Xamarin for Android and iOS. This makes it significantly easier to provide NFC functionality across different platforms – especially now that the iPhone also finally supports the open NDEF standard within NFC through the Apple Core NFC framework.

Changes in the Ported Version

Old versions for Silverlight and Windows (Phone) 8 have been removed, as these are no longer necessary – any projects for these platforms can stay at the older version, which is still available on NuGet.

Porting the library to .NET Standard wasn’t straightforward, due to some tooling issues – I’ve written more about this in the previous blog post. But now, it’s all done and the new version works flawlessly.

In the meantime, the iCal.NET library has been officially ported to newer .net versions. While the previous NFC library used a custom fork that made it compatible, I was now able to remove the fork and go back to the official version. The current iCal.NET beta is compatible to .NET Core and can be used from .NET Standard libraries.

I’ve also updated the demo app, which is still available for free in the Windows Store. The license of the library has changed from the older LGPL 2 to the newer LGPL 3 variant.