iCal.NET is an iCalendar (RFC 5545) class library for .NET aimed at providing RFC 5545 compliance, while providing full compatibility with popular calendaring applications and libraries.
iCal.NET is available as a nuget package.
There's a guide just for you: Migrating from dday.ical
The wiki contains several pages of examples of common ical.net usage scenarios.
- Simple event with a recurrence
- Deserializing an ics file
- Working with attachments
- Working with recurring elements
- Concurrency scenarios and PLINQ
- Migrating from dday.ical
ical.net uses semantic versioning. In a nutshell:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Bug fixes and unit tests are the order of the day, particularly focusing on symmetric serialization and deserialization. dday.ical had many unit tests showing that various aspects of deserialization worked properly, but did not have many (any?) tests that showed that serialization worked. I am working on making sure these operations are reliably symmetrical.
Secondly, I am working on a .NET Core port. This work is largely done, but the tooling support for .NET Core isn't great. I have postponed work on that until such time as .NET Core versions can be emitted as part of a standard "Batch Build" alongside normal .NET binaries.
I have written a fairly detailed collection of things I'd like to get done for v3, which will involve some significant API changes, and simplifications of serialization and deserialization.
http://rianjs.net/2016/07/api-changes-for-ical-net-v3
I don't have clear plans beyond what I have outlined there. It may be that ical.net can be put on a shelf for a while after that.
iCal.NET logo adapted from Love Calendar By Sergey Demushkin, RU