I want to create a calendar in my application that external users can view.
The CalDAV (basically WebDAV+iCalendar) format seems to be relatively widely supported, altho
If what you are looking for is a CalDAV Client then my suggestion is DAVDroid, this is the best CalDAV Client I have never tried. It's a connector for the calendar account of your phone allowing to consume the data from your CalDAV Server from any Calendar App installed on your phone.
Other interesting CalDAV Clients are:
Windows:
If you are looking for a ICalendar library for .NET you can check the one my friend and I build: ICalendar
Any doudt you can ask us!!!