将iCal.net与Google日历结合使用

时间:2018-01-07 23:12:29

标签: google-calendar-api icalendar dday ical-dotnet

我已经在一个用于调度官员的应用程序中用iCal.Net替换了DDay iCal库。许多官员喜欢在他们的Google日历上使用“从URL添加”添加他们的游戏日历,以便他们可以在手机上查看他们的日程安排。但是,Google日历似乎不喜欢现在生成的.ics文件。它会导入正常,但尝试通过URL添加它会导致不显示任何事件。我通过URL与其他客户端(Outlook,O365等)添加链接没有任何问题,文件在文本编辑器中显示正常。

1 个答案:

答案 0 :(得分:1)

此问题似乎是由OpenTextFileWriter方法引起的,包括默认ASCII编码中的字节顺序标记(BOM)。以下是生成此文件的原始代码:

Dim MySerializer As New CalendarSerializer()
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter(strPath, False)
file.Write(MySerializer.SerializeToString(MyCal))
file.Close()

在Google日历和Apple的“订阅此日历”之前,我必须将生成ICS文件的代码更改为以下内容:

Dim MySerializer As New CalendarSerializer()
Dim file As System.IO.StreamWriter
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
file = My.Computer.FileSystem.OpenTextFileWriter(strPath, False, utf8WithoutBom)
file.Write(MySerializer.SerializeToString(MyCal))
file.Close()

有趣的是,Outlook和Office 365对于BOM并不挑剔,而且在那里工作得很好。