在C#中创建iCal文件

时间:2020-03-05 18:39:33  来源:igfitidea点击:

我正在寻找一种在c(asp.net)中生成iCalendar文件(* .ics)的好方法。我找到了一些资源,但是缺少的一件事是它们对带有引号和换行符的带引号的可打印字段的支持。

例如,如果描述字段编码不正确,则仅显示第一行,并且可能破坏* .ics文件中的其余信息。

我正在寻找可以生成* .ics文件的现有类和/或者可以生成带引号的可打印字段的类。

解决方案

回答

我使用DDay.Ical,它的好东西。
能够打开一个ical文件并在一个不错的对象模型中获取其数据。它说是beta,但对我们来说效果很好。

该库已被弃用,但已由另一位开发人员选择并重新发布为iCal.NET。

有关发行说明:rianjs.net/2016/07/dday-ical-is-now-ical-net

来源GitHub:github.com/rianjs/ical.net

回答

iCal可能很复杂,因此我建议使用一个库。 DDay是一个很好的免费解决方案。最后,我检查了它对重复发生的事件没有完全支持,但是除此之外,它看起来确实不错。绝对要与几个客户一起测试日历。

回答

查看http://www.codeproject.com/KB/vb/vcalendar.aspx

它不像我们要求的那样处理带引号的可打印字段,但是其余代码在那里,可以修改。

回答

我发现最简单的方法是使用微格式标记HTML。

如果我们要生成iCalendar文件,则可以使用hCalendar微格式,然后添加诸如"添加到日历"之类的链接,该链接指向:

http://feeds.technorati.com/events/ [我们网页的完整URL,包括http://]

然后,Technorati页面解析页面,提取hCalendar信息,并将iCalendar文件发送给客户端。

回答

根据RFC-2445,注释和描述字段为TEXT。测试字段的规则是:
[1] TEXT字段中的一行不得超过75个八位位组。
[2]包裹是通过在后面插入空白CRLF来实现的。
[3]必须对几个字符进行编码,包括(反斜杠); (分号),(逗号)和换行符。使用(反斜杠)作为定界符得到\;。 \,\ n

示例:以下是带有格式化属性的示例
属性值中的换行符:

DESCRIPTION:Meeting to provide technical review for "Phoenix"
   design.\n Happy Face Conference Room. Phoenix design team
   MUST attend this meeting.\n RSVP to team leader.

回答

iCal(ical 2.0)和quoted-printable不能同时使用。

vCal(vCal 1.0)中经常使用带引号的可打印字符来表示不可打印的字符,例如换行符(= 0D = 0A)。默认vCal编码为7位,因此有时我们需要使用quoted-printable来表示非ASCII字符(我们可以覆盖默认编码,但是不需要其他与​​vCal兼容的通信方也可以理解它。)

在iCal中,特殊字符使用转义符表示,例如'\ n'。默认编码为UTF-8,所有符合iCal的各方都必须支持它,这使得在iCal 2.0(和vCard 3.0)中完全不需要带引号的打印内容。

我们可能需要支持客户/利益相关者以阐明要求。 vCal和iCal之间似乎有些混乱。